如何使用diff命令对比C程序运行输出与预期txt文件内容
C程序运行输出与预期文本对比方法
你之前操作出错的核心原因是混淆了「编译生成的二进制可执行文件」和「程序运行时的输出内容」:a.out是gcc编译得到的二进制程序文件,本身不是程序的运行输出,直接和文本文件对比自然无法得到预期结果。
具体操作步骤如下:
- 第一步:运行编译好的可执行文件,将运行输出重定向存储到临时文件
执行命令:./a.out > actual_output.txt
该命令会把程序运行时打印到终端的所有内容写入actual_output.txt文件中。 - 第二步:使用diff命令对比实际输出文件和预期输出文件
执行命令:diff actual_output.txt test1expectedoutput.txt
命令的输出就会明确标注两个文件的具体差异内容。
示例场景运行结果
对应你给出的测试场景:代码为printf("Hello\n");,预期文件内容只有Hello没有末尾换行,执行diff后会输出如下提示明确差异点:
1c1 < Hello --- > Hello \ No newline at end of file
更简便的一步对比方法(无需生成临时文件)
你可以直接用进程替换语法,把程序运行输出直接传给diff做对比,省去中间文件的生成:diff <(./a.out) test1expectedoutput.txt
如果需要忽略行尾的空白字符(比如多余的换行、空格)差异,可以加-Z参数:diff -Z <(./a.out) test1expectedoutput.txt
内容的提问来源于stack exchange,提问作者CantCodeForShit
相关产品推荐
相关产品推荐

