以下程序:#include "stdio.h"#include "string.h"void main(){char xx[80][80];FILE *fp;int i=0;char *p;if((fp=fopen("IN.DAT","r"))==NULL) ;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'\n');if(p) *p=0;i++;}for(i=0;i<10;i++)puts(xx[i]);}這個為什么輸出結果和用fread的輸出結果不一樣?用一次fgets之后為什么fp指針沒有越界,又能完整的讀出下一個字符串來?還有ip(p),p是指針,用if語句是判斷p是什么意思呢?
4 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
fread讀入的內容不包括最后的字符串終結符,而fgets則包括這個,也就是說fread讀入的內容不是字符串,因為少一個終結符,而fgets則讀入的是一個字符串。
至于if(p)這個問題應該很明了,雖然p是指值,但是可以讓指針指向NULL,這樣的話就可以使用if(p)來判斷指針是否指向了內存,若沒有就跳過語句。
- 4 回答
- 0 關注
- 1363 瀏覽
添加回答
舉報
0/150
提交
取消