如何批量测试C语言斐波那契数列程序并输出结果至文本文件?
解决C语言批量测试斐波那契函数及文件输出问题
一、调用单独文件中的斐波那契函数
把斐波那契函数拆分到独立文件里,需要用头文件声明+源文件实现的方式,具体步骤如下:
创建头文件
fib.h,用于声明函数接口:#ifndef FIB_H #define FIB_H // 声明计算第n个斐波那契数的函数(用long long避免大数溢出) long long fib(int n); #endif创建实现文件
fib.c,编写斐波那契函数的具体逻辑:#include "fib.h" long long fib(int n) { if (n <= 0) return 0; if (n == 1 || n == 2) return 1; // 用迭代版本避免递归栈溢出,适合大n值测试 long long a = 1, b = 1, c; for (int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return b; }创建批量测试程序
test_fib.c,调用斐波那契函数并处理文件输出:#include <stdio.h> #include "fib.h" int main() { // 定义批量测试的输入用例 int test_cases[] = {1, 5, 10, 15, 20, 30, 40}; int case_count = sizeof(test_cases) / sizeof(test_cases[0]); // 打开输出文件,"w"表示覆盖写入,文件不存在则自动创建 FILE *fp = fopen("fib_results.txt", "w"); if (fp == NULL) { printf("无法打开输出文件!\n"); return 1; } // 遍历测试用例,计算并写入文件 for (int i = 0; i < case_count; i++) { int n = test_cases[i]; long long result = fib(n); // 同时写入文件和控制台,方便核对 fprintf(fp, "第%d个斐波那契数:%lld\n", n, result); printf("第%d个斐波那契数:%lld\n", n, result); } // 必须关闭文件,强制刷新缓冲区到磁盘 fclose(fp); printf("测试结果已写入fib_results.txt\n"); return 0; }编译运行
在命令行用gcc编译(Windows/macOS/Linux通用):gcc fib.c test_fib.c -o test_fib运行生成的可执行文件:
./test_fib # Linux/macOS test_fib.exe # Windows
二、解决输出文件为空的问题
文件为空通常是以下几个原因,对应解决办法:
- 未关闭文件:C语言文件操作依赖缓冲区,不调用
fclose(fp)的话,内容可能留在内存里没写到磁盘,必须在写入完成后关闭文件。 - 文件打开失败:比如路径错误、权限不足,一定要检查
fopen的返回值,如果是NULL就报错退出,避免后续无效写入。 - 无实际写入内容:比如测试用例数组为空、计算逻辑出错导致
fprintf没执行,可以先在控制台打印结果,确认计算流程正常。 - 打开模式错误:如果用"r"(只读)模式打开要写入的文件,会导致无法写入,必须用"w"(覆盖)或"a"(追加)模式。
内容的提问来源于stack exchange,提问作者Henry T
相关产品推荐
相关产品推荐

