2 c中常用的輸入輸出函式總結

2021-08-13 16:00:37 字數 3843 閱讀 3496

1>scanf()printf()//支援格式控制符的輸入和輸出

scanf()的返回值是成功讀入的專案的個數,如:

num=scanf("%d%d",&a,&b);
如果a、b均讀入成功,則num 的值為2

scanf()除了%c模式之外,在讀取輸入時,均跳過空白字元(製表符、空格、換行符),直到第乙個非空白字元處開始讀取,讀至遇到下乙個空白字元或與正在讀取型別不符的字元停止。例如讀取下面這個輸入行:

-13.45e12# 0
%d模式時,scanf()會讀取-13並在小數點處停止,將小數點作為下乙個輸入字元。然後,scanf()將會把字串行-13轉換成相應的整數值,並將該值儲存在目標整型變數中,如果緩衝區前面的是非數字,則scanf()不讀入。

%f模式時,scanf()會讀取字元-13.45e12,並在#處停止,將它作為下乙個輸入字元。然後把字串行-13.45e12轉換為相應的浮點數值,並將該值儲存在目標浮點型變數中。

%c模式時,scanf()會讀取並儲存第乙個字元,在這裡是乙個空字元。

printf()的返回值是當前次輸出的字元個數( 乙個位元組的標準)。

2>getchar()putchar()//單個字元的輸入和輸出

getchar()每次讀取乙個字元。如控制台輸入jigf按下回車鍵時,僅讀取j

getchar()多用於逐個讀取字元,一般使用行緩衝。如:

while((ch=getchar())!='\n')

當鍵盤輸入一段字元並最後按下回車鍵後,getchar()開始從j鍵盤緩衝區逐個讀取並賦予ch,

putchar()每次列印乙個字元,括號中的引數可以是數字,字元型變數,單引號引起來的字元,列印結果均為引數對應的字元。

返回值:(1)當輸出正確時,返回輸出字元轉換為的unsigned int 值;(2)當輸出錯誤時,返回eof檔案結束符。

3>gets()puts()//字串的輸入和輸出

gets()用於字串的讀取,使用行緩衝,從鍵盤輸入一段字元並下回車鍵時,開始從鍵盤緩衝區讀取,並丟棄換行符\n,自動新增空字元\0。gets()的缺點是當輸入的字元數超過了用來存放的字元型陣列的大小,就會溢位到相鄰的記憶體中。

puts()用於字串的輸出,並於結尾自動新增換行符\n。

4>fopen()fclose()

fopen()用於開啟檔案,有兩個引數,第乙個是要開啟的檔名,更確切地說是包含該檔名的字串的位址;第二個是用於指定檔案開啟模式的乙個字串。函式的返回值是乙個檔案指標,該指標用於其他函式(例如fgets()等)操作指定的檔案。(示範見於下面其它檔案操作函式的例子**)

fopen()的模式引數列表:

"r"開啟乙個文字檔案,可以讀取檔案

"w"開啟乙個文字檔案,可以寫入檔案,先將檔案長度截為0,如果檔案不存在則先建立之

"a"開啟乙個文字檔案,可以寫入檔案,向已有的檔案尾部追加內容,如果該檔案不存在則先建立之

"r+"

開啟乙個文字檔案,可以進行更新(讀取和寫入)檔案

"w+"

開啟乙個文字檔案,可以進行更新(讀取和寫入)檔案,如果檔案存在則先將其長度截為0,如果檔案不存在則先建立之

"a+"

開啟乙個文字檔案,可以進行更新(讀取和寫入)檔案,如果該檔案存在則先將其長度截為0,如果檔案不存在則先建立之

"rb","wb","ab",

"rb+","wb+","ab+",

"r+b","w+b","a+b"

與前面的模式相似,只是使用二進位制模式而非文字模式開啟檔案

fclose(fp)用於關閉由指標fp指定的檔案。

5>fgets()和  fputs()//偏向於向檔案讀取和輸出字串,但同樣可以選擇從鍵盤讀取和向螢幕輸出

fgets()要接受三個引數,當如下面這樣使用時,其作用和gets()幾乎一樣,不同的是它並不丟棄換行符\n而是讀取並儲存它:

char name[8];

puts("請輸入你的名字:");

fgets(name,8,stdin);//8限定最多讀取7個字元或者讀完乙個換行符為止,stdin表示從鍵盤上讀取資料

fputs()與上面對應,同樣接受三個引數,當如下面這樣使用時,其效果與puts()幾乎一樣,但它不會自動新增換行符\n:

char name=;

fputs(name,6,stdout);//引數6控制輸出字元,stdout表示輸出至螢幕

當它們對檔案進行操作的示例:

char ch [500];

file * fp=fopen("d:\\88.txt","r");

fgets(ch,strlen(ch)+1,fp);//從檔案88.txt讀取並儲存至ch中

fclose(fp);

char ch=;

file * fp=fopen("d:\\88.txt","w");

fputs(ch,strlen(ch),fp);//把ch中的字元輸出至檔案88.txt中

fclose(fp);

fgets()返回值

fputs()返回值》=0表示寫入成功,返回值=-1(eof)表示寫入失敗

6>fscanf()fprintf()//偏向於操作檔案的、支援格式控制符的輸入輸出函式

fscanf()/ fprintf()的使用與fgets()/fputs()類似,不過前者可以用格式符控制字元格式:

fscanf(char *,%s,stdin);

fprintf(char *,%s,stdout);

fscanf(char *,%s,file *);

fprintf(char *,%s,file *);

7>fread()fwrite()//檔案的寫入和讀取(二進位制模式)

fread()用於從檔案中讀取資料,fwrite()用於向檔案中寫入資料:

#include#includeint main(void)

if ((fp2 = fopen("d:\\99.txt", "w")) == null)

fread(ch, 1, sizeof(ch), fp1);//把檔案指標fp1指向的檔案中的內容讀取,並存字元陣列ch中

puts(ch);

fclose(fp1);

fwrite(ch, 1, sizeof(ch), fp2);//把字元陣列ch中的內容寫入檔案指標fp2所指的檔案中

fclose(fp2);

system("pause");

return 0;

}

8>fseek()ftell()

9>fgetpos()fsetpos()

10>int ungetc(int c,file * fp)

11>int fflush(file * fp)

12>setvbuf()

2 C語言複習 基本輸入輸出函式

基本的輸出輸出函式主要有 getchar putchar printf d n 變數 scanf d xx 1.getchar 收到的不是換行就繼續迴圈,比較實用的判斷 while getchar n 輸入輸出單 字元 getchar putchar 小心,有時候scanf後再加入乙個getchar...

2 C 輸入輸出流的簡介

使用例項 int a cout 請輸入乙個整形數值 endl cin a cout 列印輸入乙個整形數值 a endl int b 100 printf d n b 輸出十進位制的數b 並換行 printf o n b 輸出無符號八進位制的數b 並換行float c 5 3 預設顯示是六位小數 pr...

C常用輸入輸出總結

一 輸入輸出格式 1 整型 scanf d m int scanf ld m long int scanf lld m long long int2 浮點型 1 基本格式 scanf f m float scanf lf m double2 加域寬 includeint main return 0 ...