如何比较 ./a.out 和具有差异的 .txt 文件?

How to compare ./a.out and a .txt file with diff?

所以我有一个 c 程序,例如test1.c,我想将它与名为 test1expectedoutput.txt.

的文本文件进行比较

我该怎么做?

我通过 gcc test1.c 编译了 c 文件(用 nano 编写),但是如何比较它?

.c 文件与 .txt 文件进行比较显然不起作用,因为它只是随机地完全打印出它们,但是如果我尝试在该文件目录中使用 diff 进行比较:

diff ./a.out test1expectedoutput.txt

我收到消息:

Binary files ./a.out and test1expectedoutput.txt differ

所以我不是 100% 确定如何比较它们并知道它们之间的区别是什么?简单来说,假设 test1.c 中的程序只是说:

printf("Hello\n");

test1expectedoutput.txt 只是读取(使用 cat):

Hello

编译后如何比较这些?

您可以尝试将./a.out 的内容转储到文件中。 试试这个:./a.out > actualoutput.txt 然后运行diff actualoutput.txt test1expectedoutput.txt

我理解你的意思是将你的 c 程序的输出与 txt 文件进行比较。 在这种情况下,您可以首先通过将标准输出重定向到 .txt 文件来将输出存储到另一个文件:

./a.out > output.txt
diff output.txt test1expectedoutput.txt

diff 命令还支持文件名的 - 符号,告诉它从标准输入读取。因此,您可以通过简单地将标准输出重定向到 diff 命令的标准输入, 使用单个命令 :

来完成它而无需将其存储到另一个文件中
./a.out | diff test1expectedoutput.txt -

Sanat 和 Mythos 都是正确的。

我最后做的是 ./a.out > output.txt 然后使用 diff,diff(如果文件正确)不输出任何东西所以我喜欢使用 diff -s text1.txt text2.txt 这将然后,如果与双重检查相同,则输出它们相同。

问题是,它不完全相同,它不会告诉我为什么,无论我尝试什么和颜色,所以我手动 nano'ed 两个文本文件,然后进去,然后就发现了那个随机有一个额外的 space,通常它会为差异着色,但它不会为 spaces 着色...所以这很有趣。