1. 程式人生 > >C/C++輸入輸出函式(I/O)總結

C/C++輸入輸出函式(I/O)總結

在c語言的學習使用過程中,除了格式化輸入輸出外,還有很多輸入輸出函式,包括字串輸入輸出、檔案輸入輸出等。在使用的過程中一直沒有認真總結過,在這裡把以前學的好好總結一下,以便時間長了又忘記了。

字串輸入輸出

1、輸入函式:gets、fgets、scanf

gets 遇到換行符時結束,不讀取換行符,自動在字串後面加上空字元(/0); 返回值是指向char的指標(和傳遞給他的是同一個指標),到結尾時返回空指標。

char name[80];
printf("please enter your name");
gets(name);

fgets 遇到換行符或者到最多讀入字元處結束,並把換行符儲存到檔案中。第二個引數說明最大讀入字元數,stdio指從鍵盤上讀取。

char name[80];
char* ptr;
printf("please enter your name");
ptr=fgets(name,80,stdin);

scanf 返回一個整數值,表示成功讀取的專案數,遇到檔案結尾時返回一個 EOF。

char name1[10];
char name2[10];
printf("please enter 2 name");
scanf("%5s %10s",name1,name2);

2、輸出函式:puts、fputs 、printf

char str[100]=" I'm a chinese, i love my hometown."
; puts(str);

puts遇到空字元是停止,並在字串結尾新增換行符;經常和gets配合使用。從螢幕讀取一行並顯示在下一行如下所示:

char str[100];
while(gets(str))
      puts(str);

fputs 不新增換行符,stdout是指輸出到螢幕,經常和fputs一起使用。從螢幕讀取一行並顯示在下一行如下所示:

char str[100];
while(fgets(str,100,stdin))
      fputs(str,stdout);

printf 輸出比較麻煩,而且計算機執行時間比較長,但是在一行中輸出多個字串時候比較簡單。

char
str[100]=" I'm a chinese, i love my hometown."; printf("%s\n",str);
printf("%s,%s\n",name,id);

檔案輸入輸出

1、fopen、fclose

int ch;
FILE* fp;
fp=fopen("a.txt","r");
while((ch=getc(fp)!=NULL)
{
     putchar(ch);
}

fopen 返回一個 FILE 檔案指標,第一個引數表示要讀取的檔名,也可以在前面加上檔案路徑,第二個引數辨識讀取模式,通常包括:
“r”只讀,“w”只寫,,”a“向檔案末尾寫,等。

if(fclose(fp)!=0)
printf("error in closing file");

fclose 檔案成功關閉,返回0,否則,返回EOF。

2、fprintf、fscanf

if ((fp=fopen("a","r+"))==NULL)
{
    fprintf(stdout,"cant open \"a\"file.\n");
    exit(1);
}

fprintf、fscanf 和 printf、scanf 相似,只是要指定合適的檔案。

while(fscanf(fp,"%s","a")==1)
    puts(a);

3、fgets、fputs

char str[100];
while (fgets(str,100,stdin)!=NULL && str[0]!='\n'
       fputs(str,stdout);
har str[100];
while (fgets(str,100,a)!=NULL && str[0]!='\n'
       fputs(str,a);

a為檔名。fgets保留了輸入中的換行符,fputs 不會自動新增換行符。

4、fseek、ftell

fseek 第一個引數是檔案指標,第二個引數是偏移量,第三個引數是起始點位置,可以是 SEEK_SET 、SEEK_CUR、 SEEK_END,表示檔案開始,當前位置,檔案結尾。ftell 返回檔案的當前位置。

File * fp;
long last;
fseek(fp,0L,SEEK_END);
last=ftell(fp);

5、fread、fwrite

fread、fwrite 用於位二進位制檔案的讀取;
fwrite 第一個引數表示資料的來源,第二個引數表示每個物件的大小,對三個引數表示物件的大小,第四個引數表示要寫入的檔案。
fread 第一個引數表示讀取資料的儲存位置,第二個引數表示每個物件的大小,對三個引數表示物件的大小,第四個引數表示要讀取的檔案。

File * fp;
double line[256];
fwrite(line,sizeof(double),256,fp)
File * fp;
double line[256];
fread(line,sizeof(double),256,fp)

第一個例子表示將line中256個double資料寫入fp中;
第二個例子表示將fp中256個double資料讀取,存入line中。