C說話 以字符串的情勢讀寫文件詳解及示例代碼。本站提示廣大學習愛好者:(C說話 以字符串的情勢讀寫文件詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 以字符串的情勢讀寫文件詳解及示例代碼正文
fgetc() 和 fputc() 函數每次只能讀寫一個字符,速度較慢;現實開辟中常常是每次讀寫一個字符串或許一個數據塊,如許能顯著進步效力。
讀字符串函數fgets
fgets() 函數用來從指定的文件中讀取一個字符串,並保留到字符數組中,它的原型為:
char *fgets ( char *str, int n, FILE *fp );
str 為字符數組,n 為要讀取的字符數量,fp 為文件指針。
前往值:讀取勝利時前往字符數組首地址,也即 str;讀取掉敗時前往 NULL;假如開端讀取時文件外部指針曾經指向了文件末尾,那末將讀取不就任何字符,也前往 NULL。
留意,讀取到的字符串會在末尾主動添加 '\0',n 個字符也包含 '\0'。也就是說,現實只讀取到了 n-1 個字符,假如願望讀取 100 個字符,n 的值應當為 101。例如:
#define N 101 char str[N]; FILE *fp = fopen("D:\\demo.txt", "r"); fgets(str, N, fp);
表現從 D:\\demo.txt 中讀取100個字符,並保留到字符數組str中。
須要重點解釋的是,在讀取到 n-1 個字符之前假如湧現了換行,或許讀到了文件末尾,則讀取停止。這就意味著,不論n的值多年夜,fgets() 最多只能讀取一行數據,不克不及跨行。在C說話中,沒有按行讀取文件的函數,我們可以借助 fgets(),將n的值設置地足夠年夜,每次便可以讀取到一行數據。
【示例】一行一行地讀取文件。
#include <stdio.h> #include <stdlib.h> #define N 100 int main(){ FILE *fp; char str[N+1]; if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){ printf("Cannot open file, press any key to exit!\n"); getch(); exit(1); } while(fgets(str, N, fp) != NULL){ printf("%s", str); } fclose(fp); system("pause"); return 0; }
將上面的內容復制到 D:\\demo.txt:
C說話中文網
http://c.biancheng.net
一個進修編程的好網站!
那末運轉成果為:
fgets() 碰到換行時,會將換行符一並讀取到以後字符串。該示例的輸入成果之所以和 demo.txt 堅持分歧,該換行的處所換行,就是由於 fgets() 可以或許讀取到換行符。而 gets() 紛歧樣,它會疏忽換行符。
寫字符串函數fputs
fputs() 函數用來向指定的文件寫入一個字符串,它的原型為:
int fputs( char *str, FILE *fp );
str 為要寫入的字符串,fp 為文件指針。寫入勝利前往非正數,掉敗前往EOF。例如:
char *str = "http://c.biancheng.net";
FILE *fp = fopen("D:\\demo.txt", "at+");
fputs(str, fp);
表現把把字符串 str 寫入到 D:\\demo.txt 文件中。
【示例】向上例中樹立的 d:\\demo.txt 文件中追加一個字符串。
#include<stdio.h> int main(){ FILE *fp; char str[102] = {0}, strTemp[100]; if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){ printf("Cannot open file, press any key to exit!\n"); getch(); exit(1); } printf("Input a string:"); gets(strTemp); strcat(str, "\n"); strcat(str, strTemp); fputs(str, fp); fclose(fp); return 0; }
運轉法式,輸出C C++ Java Linux Shell,翻開 D:\\demo.txt,文件內容為:
C說話中文網
http://c.biancheng.net
一個進修編程的好網站!
C C++ Java Linux Shell
以上就是 C說話字符串的情勢讀取文件,後續持續整頓相干材料,感謝年夜家對本站的支撐!