下面的代码是将文本文件复制到另一个文件中。 它失败了。断言错误(stream!= NULL)
fp = fopen("quiz.txt", "w");
fp2 = fopen("output.txt", "r");
number_of_conversions = fscanf(fp2, "%c", &c);
while (number_of_conversions != 0 && number_of_conversions != EOF){
fputc(c,fp);
number_of_conversions = fscanf(fp2, "%c", &c);
}
fclose(fp2);
fclose(fp);
答案 0 :(得分:0)
在使用返回的文件指针之前,请务必检查fopen()
的成功。
如果fopen()
失败,它将返回NULL并进一步使用undefined behaviour。因此,在fopen()
调用之后立即进行NULL检查。此外,FWIW,如果fopen()
失败,则无法打开FILE *
,您也无需致电fclose()
。