如何无需反复打开文件,捕获matrix_output函数的全部输出至file.txt?
优化矩阵输出函数,减少重复文件操作
你完全可以通过只打开一次文件解决反复IO的问题,频繁打开关闭文件不仅效率低下,还可能引发不必要的异常。下面是修改后的代码:
/* main.c */ #include <stdio.h> #include <stdlib.h> void matrix_output(); void matrix_output() { FILE *fp = fopen("file.txt", "w"); // 仅打开一次文件,"w"模式自动清空原有内容并准备写入 if (fp == NULL) { // 增加文件打开失败的判断,避免程序崩溃 perror("Failed to open file"); return; } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { fprintf(fp, "%d\t", i+j); // 直接复用已打开的文件指针写入内容 } fprintf(fp, "\n"); // 每行结束后写入换行符 } fclose(fp); // 所有写入操作完成后统一关闭文件 } int main() { matrix_output(); return 0; }
核心修改说明:
- 把文件的
fopen和fclose移到循环外部,全程复用同一个文件指针,彻底消除反复打开关闭的冗余操作 - 使用
"w"模式打开文件,一次性完成清空原有内容+准备写入的操作,无需额外单独清空文件 - 增加文件打开失败的错误处理,让代码更健壮(可选但推荐)
- 修改后输出内容完全符合你的要求:
0 1 2 1 2 3 2 3 4
内容的提问来源于stack exchange,提问作者ecjb
相关产品推荐
相关产品推荐

