下面的代码是将一个文本文件复制到另一个文本文件中。 它的失败。断言错误(流!=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);
最佳答案
始终检查 fopen()
是否成功在使用返回的文件指针之前。
如果fopen()
失败,它将返回NULL,进一步使用它会导致undefined behaviour 。因此,在 fopen()
调用之后立即进行 NULL 检查。另外,FWIW,如果 fopen()
失败,则没有打开的 FILE *
并且您也不需要调用 fclose()
.
关于c - 从文件读取时程序崩溃。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022575/