以下程序:#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 关注
- 1327 浏览
添加回答
举报
0/150
提交
取消