提问人:Henry T 提问时间:1/26/2023 更新时间:1/27/2023 访问量:60
对于从用户那里获取单个数字的程序,如何一次测试多个值,然后将它们输出到文本文件中?
For a program that takes a single number from a user, how can you test several values at once and then output them to a text file?
问:
我用 C 语言编写了一个相当简单的程序,它接受输入 n 并计算斐波那契数列中的第 n 个数。当这个程序运行时,你在键盘上输入一个数字,它就会打印出结果。我的问题是,我一次只能手动测试一个输入,以检查错误。如何编写一个程序来同时测试多个输入,并将其输出到可读的文本文件中?
我尝试编写一个程序来运行这些测试,但我不知道如何使程序使用我的函数,该函数编写在单独的文件中。我似乎一次只能测试一个,当我将结果输出到文本文件时,我也无法读取文本文件,它是空的。
答:
1赞
Allan Wind
1/26/2023
#1
最简单的解决方案是将代码迁移到函数,然后在循环中调用它:
#include <stdio.h>
long fib(long n) {
// ...
}
int main() {
long n = 2;
for(long i = 0; i < n; i++)
printf("%ld %ld\n", i, fib(i));
}
为此,您必须将 i/o(提示用户输入)与实现斐波那契算法的函数分开。一般来说,这是一个很好的设计实践。您可以构建两个程序(一个交互式程序,一个非交互式程序),或者一个程序,例如使用命令行参数驱动它:
int main(int argv, char argv[]) {
if(argc == 2) {
long n = atol(argv[1]);
for(long i = 0; i < n; i++)
printf("%ld %ld\n", i, fib(i));
return 0;
}
printf("n? ");
long n;
if(scanf("%ld", &n) != 1) return 1;
printf("%ld %ld\n", n, fib(n));
}
我建议您打印数据,然后将 stdout 重定向到文件。您必须向我们展示一些代码,以找出为什么您的文本输出文件功能不起作用。
评论
argv
for /F %i in (input.txt) do @(echo %i |my_program.exe)
其中每行包含一个测试input.txt
for /F "tokens=1-2" %i in (input.txt) do @(echo %j && echo %i |my_program.exe)
其中每行都包含一个测试值和一个正确的结果值input.txt