国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言 以字符串的形式讀寫文件詳解及示例代碼

2020-01-26 14:27:04
字體:
來源:轉載
供稿:網友

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 101char 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 100int 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語言字符串的形式讀取文件,后續繼續整理相關資料,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 博野县| 深泽县| 东乡族自治县| 喀喇| 合阳县| 永顺县| 三台县| 大化| 兰西县| 缙云县| 固始县| 司法| 潮安县| 孟津县| 泰来县| 博乐市| 林芝县| 玛沁县| 怀集县| 隆回县| 天长市| 秦皇岛市| 旬阳县| 卓资县| 阿拉善右旗| 平塘县| 宁国市| 建昌县| 康定县| 永胜县| 无棣县| 仁寿县| 齐河县| 当涂县| 连平县| 达日县| 白银市| 津市市| 淅川县| 惠安县| 铜陵市|