如何比较 ./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 着色...所以这很有趣。
所以我有一个 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 着色...所以这很有趣。