能否将整数写入.out文件?代码执行报File is NULL错误求解决
问题分析与解决方案
首先明确:完全可以将整数写入.out格式的文件,你的代码出现问题是因为存在语法错误和逻辑顺序错误,具体问题及修正如下:
代码中的错误点
- 语法错误:
fprintf语句末尾缺少右括号,导致编译失败或运行时异常,正确写法应为fprintf(writeFile, "%d", arrInt[k]); - 逻辑顺序错误:你先执行了写入操作,再判断文件指针是否为NULL。如果文件打开失败,
writeFile为NULL,此时调用fprintf会触发未定义行为,必须先判断文件是否打开成功,再执行写入 - 缺少必要头文件:使用
exit()函数需要包含<stdlib.h>头文件,否则可能出现编译警告或错误
修正后的代码
#include <stdio.h> #include <stdlib.h> // 加入exit()所需的头文件 int main() { int arrInt[] = {1, 2, 3, 4, 5}; FILE* writeFile = fopen("outFile.out", "w"); // 先判断文件是否打开成功 if(writeFile == NULL) { printf("File is NULL"); exit(-1); } // 无空格、无换行写入整数 for(int k = 0; k < 5; k++) { fprintf(writeFile, "%d", arrInt[k]); // 修复语法错误,补全右括号 } fclose(writeFile); return 0; }
验证结果
执行修正后的代码后,outFile.out文件内容会是:
12345
完全符合你要求的无空格、无换行单行整数格式。
额外排查技巧
如果遇到文件打开失败的情况(比如权限不足、指定路径不存在),可以用perror()打印具体错误原因,方便排查:
if(writeFile == NULL) { perror("Failed to open file"); exit(-1); }
内容的提问来源于stack exchange,提问作者src2012
相关产品推荐
相关产品推荐

