C语言,打开文件的代码中有一点看不懂的地方~

来源:百度知道 编辑:UC知道 时间:2024/06/27 06:34:20
函数是ReadDat()实现从文件in.dat中读取一篇英文文章并存入字符串数组xx中.

int ReadDat(void)
{
FILE *fp;
int i=0;
chat *p;

if((fp=fopen("in.dat","r"))==NULL)
return 1;
while (fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],"\n");
if(p)*p=0;
i++;
}
flose(fp);
return 0;
}

请问谁能给我讲讲 while (fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],"\n");
if(p)*p=0;
i++;
}
这一段,尤其是if(p)*p=0;是什么意思啊??

谢谢了~
回复一楼
我知道是分开写,可我不明白是什么意思啊~

if(p)*p=0;
这样写应该懂了吧:
if (p){
*p=0;
}

while (fgets(xx[i],80,fp)!=NULL)
//fgets()用来从参数fp所指的文件内读入字符并存到参数xx[i]所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。其中!=null代不能出错,因为:返回NULL则表示有错误发生,说明有可能到底了。
{
p=strchr(xx[i],"\n");
//返回一个换行在另xx[i]中首次出现的位置到后者末尾的子字符串
if(p)
*p=0; //没有没换行。如果换行了,下次*p从行首开始读。

i++; //数组要+1要不再读的话,就把上次的覆盖不。
}