原型是char *fgets(char *s, int n, FILE *stream);
参数:
*s: 字符型指针,指向将存储到的数据地址。
n: 整型数据,将从流中读取 n - 1 个字符。
*stream: 指针数据,欲读取的流。
功能:
从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否则返回NULL。
fgets()函数当读到文件尾时,会返回NULL,而
strlen()函数当参数是NULL时,会运行异常,出现你的程序情况。
因此,你的程序需要改进一下
while((strlen(fgets(ch,20,fp1)))>0) 这句改成:
while( fgets(ch,20,fp1) != NULL ) //就好了。
改成这样:
while(1)
{
if (fgets(ch,20,fp1)==NULL) break;
fputs(ch,fp2);
printf("%s",ch);
}
这样:
while(1)
{
if (fgets(ch,20,fp1)==EOF) break;
fputs(ch,fp2);
printf("%s",ch);
}
这样判断了是否到了文件结尾!
希望可以帮到你
望采纳