使用C语言将数值打印输出到文本文件的异常问题求助
问题解决方案
你现有脚本中写的./program.c是错误逻辑,C源代码为文本文件不可直接执行,此处应为make编译后生成的可执行程序,下文统一以./program指代。
- 方案1:通过shell重定向将标准输出写入文件
原有C代码无需修改,只需要调整shell脚本中可执行程序的运行命令,添加输出重定向规则:
将原脚本中的./program改为./program > program.dat即可,>符号会将程序打印到标准输出的所有内容写入指定的program.dat文件,不再输出到终端。
修正后的完整脚本如下:
make clean make ./program > program.dat echo cat program.dat echo END
- 方案2:在C代码中直接写文件
如果你需要在C代码层面控制输出路径,不需要依赖shell重定向,可将原有printf改为文件写入逻辑,示例代码如下:
#include <stdio.h> int main() { // 此处替换为你实际的变量定义与计算逻辑 double A = 2.33, B = 5.67; // 打开文件,w为覆盖写入模式 FILE *fp = fopen("program.dat", "w"); if (fp == NULL) { perror("打开program.dat失败"); return 1; } // 将内容写入文件而非标准输出 fprintf(fp, "%f %f", A, B); // 关闭文件,刷新缓冲区确保内容写入磁盘 fclose(fp); return 0; }
- 异常排查
如果按照上述方案操作后仍无内容写入文件,可检查以下两点:
- 确认程序正常运行没有崩溃,程序异常退出时可能会导致缓冲区内容未刷入磁盘
- 如果在C代码中使用fprintf写文件,必须调用
fclose()或者fflush()主动刷新缓冲区,否则内容会暂存在内存中不会写入磁盘
内容的提问来源于stack exchange,提问作者STOI
相关产品推荐
相关产品推荐

