debugging 对于一个从用户那里获取单个数字的程序,如何一次测试多个值,然后将它们输出到一个文本文件?

dsf9zpds  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(81)

我用C语言编写了一个相当简单的程序,它接受一个输入n,并计算斐波那契数列中的第n个数字。当这个程序运行时,你在键盘上输入一个数字,它就会打印出结果。我的问题是,我一次只能手动测试一个输入,以检查错误。我如何编写一个程序来同时测试多个输入,并将结果输出到一个可读的文本文件中呢?
我试过写一个程序来运行这些测试,但是我不知道如何让程序使用我写在一个单独文件中的函数。我似乎一次只能测试一个,而且当我把结果输出到一个文本文件时,我也不能读取这个文本文件,它是空的。

i5desfxk

i5desfxk1#

最简单的解决方案是将代码迁移到函数中,然后在循环中调用它:

#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) {
        printf("n? ");
        long n;
        if(scanf("%ld", &n) != 1) return 1;
        printf("%ld %ld\n", n, fib(n));
    }  else {
        long n = atol(argv[1]);
        for(long i = 0; i < n; i++)
            printf("%ld %ld\n", i, fib(i));
    }
}

我建议您打印数据,然后将标准输出重定向到一个文件。您必须向我们展示一些代码,以找出为什么您的文本输出文件功能不工作。

相关问题