将一个文本文件再写入另一个文件中是怎么回事啊?

2025-04-28 08:41:21
推荐回答(3个)
回答1:

原型是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 ) //就好了。

回答2:

改成这样:
while(1)
{
if (fgets(ch,20,fp1)==NULL) break;
fputs(ch,fp2);
printf("%s",ch);
}

回答3:

这样:
while(1)
{
if (fgets(ch,20,fp1)==EOF) break;
fputs(ch,fp2);
printf("%s",ch);
}
这样判断了是否到了文件结尾!
希望可以帮到你
望采纳