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

首頁 > 編程 > C > 正文

C語言文件操作中 fgets與fputs 函數詳解

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

C語言文件操作中 fgets、fputs 函數詳解

先給出api

fgets 語法:  #include <stdio.h> char *fgets( char *str, int num, FILE *stream );

函數fgets()從給出的文件流中讀取[num - 1]個字符并且把它們轉儲到str(字符串)中. fgets()在到達行末時停止,在這種情況下,str(字符串)將會被一個新行符結束. 如果fgets()達到[num - 1]個字符或者遇到EOF, str(字符串)將會以null結束.fgets()成功時返回str(字符串),失敗時返回NULL.

自己理解

1、每次讀取一行,如果讀取的一行字符數 len  > bufsize-1,則 buf[ bufsize-1 ] = '0'

       文件句柄指向第bufsize的位置。

2、每次讀取一行,如果讀取的一行字符數 len = bufsize-1,則 buf[ bufsize-1 ] = '0'

         文件句柄指向第bufsize的位置。

3、每次讀取一行,如果讀取的一行字符數  len < bufsize-1,則 buf [ len-1 ] = '/n' , buf [ len ] = '/0'

         文件句柄指向下一行的首位置。

驗證代碼:

int i=0; FILE *fp; char buff[5]; //將數組賦值為9,便于后面與賦值的地方比較  memset(buff,9,sizeof(buff));  char *fName = "d:/123.txt";  fp = fopen(fName,"r"); fgets(buff,sizeof(buff),fp);  //打印出數組的ascii碼  printf("buff數組內容:/n"); for(i=0;i<sizeof(buff);i++) { printf("%d ",(int)buff[i]);  } printf("/n");  //繼續獲取下一行字符,驗證文件句柄的位置 memset(buff,9,sizeof(buff)); fgets(buff,sizeof(buff),fp); //打印出數組的ascii碼  printf("下一行buff數組內容:/n"); for(i=0;i<sizeof(buff);i++) { printf("%d ",(int)buff[i]);  } printf("/n");  fclose(fp);

123.txt 文件內容:

1234asdf

輸出結果:

buff長度為4,驗證理解1

buff數組內容:

49 50 51 0下一行buff數組內容:52 10 0 9 

buff長度為5,驗證理解2

buff數組內容:49 50 51 52 0下一行buff數組內容:10 0 9 9 9

buff長度為10,驗證理解3

buff數組內容:

49 50 51 52 10 0 9 9 9 9下一行buff數組內容:97 115 100 102 0 9 9 9 9 9

 文件寫入數據本質:

將字符串插入到文件中,在字符串的結尾處插入換行符'/n'

fgets函數本質:

按照需要寫入的緩存空間大小,將文件中的buffsize-1個字符寫入到緩存空間,將緩存空間的buffsize位置寫入'/0'字符。

fputs函數本質:

將指定的字符串寫入文件流中,不包含字符串結尾符'/0',利用它可以替換文件流中數據,但是不能添加數據。

驗證代碼

  FILE *fp; char *fName = "d:/123.txt";  fp = fopen(fName,"r+"); fseek(fp,3,SEEK_CUR); fputs("Insert Strings",fp); fclose(fp);

原文件內容:

1234Second Line. Second Strings.

修改后文件內容:

123Insert Strings. Second Strings.

可以看出,將原文件中的“/n及Second Line.” 替換為了“Insert Strings.”

fputc函數本質:

函數fputc()把給出的字符ch寫到給出的輸出流中的指定位置. 返回值是字符, 發生錯誤時返回值是EOF. 可以替換文件流中數據,但是不能添加數據。

fgetc函數本質:

fgetc()函數返回來自stream(流)中的下一個字符,如果到達文件尾或者發生錯誤時返回EOF. 是什么字符,就返回什么字符(包括'/0','/n')。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

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

圖片精選

主站蜘蛛池模板: 宜川县| 聊城市| 汪清县| 巨野县| 原平市| 昌都县| 宁阳县| 白山市| 远安县| 云梦县| 余干县| 徐水县| 内乡县| 专栏| 乐东| 阳信县| 吴江市| 遵化市| 金秀| 留坝县| 博白县| 元谋县| 平邑县| 平顶山市| 甘谷县| 辽中县| 安龙县| 桂平市| 海林市| 洛浦县| 丹棱县| 三门县| 麻江县| 鄂伦春自治旗| 西贡区| 东乌珠穆沁旗| 大宁县| 浮梁县| 罗江县| 灵璧县| 武强县|