如何测试具有多个输入的C程序?

时间:2018-04-03 12:53:09

标签: c ubuntu testing input terminal

我有Linux Ubuntu,我想测试我的程序,有人给了我多个输入的.txt文件。现在我想用.txt文件中的输入来运行这个程序。有很多输入,所以我不想手工输入它们。 Linux终端中是否有一些命令用文件中的输入运行C? 谢谢你的回答

1 个答案:

答案 0 :(得分:3)

我认为你正遭受过于常见的误解,即标准输入" =="键盘"。别想了。如果您已经编写了一个从stdin读取的程序,那么您需要做的就是将文本文件与stdin相关联。在shell中,您可以使用重定向运算符:

./a.out < input.txt

如果您有多个输入,则可以轻松地在每个输入上调用您的程序:

for file in *.txt; do
    echo "Running on input: $file"
    ./a.out < "$file"
done

或者您可以在所有输入上运行一次程序:

cat *.txt | ./a.out

有许多方法可以做你想做的事情,并且有很多灵活性来做不同的事情。您可能希望将程序的输出与预期的输出进行比较,然后您就可以编写完整的测试套件了。例如:

if ! ./a.out < input.txt | cmp expected-output -; then
    echo "TEST FAILED" >&2
    exit 1
fi