C语言中如何在输出末尾添加EOF?解决输出对比的换行差异问题
解决diff/cmp报“无末尾换行”的文件差异问题
这个问题我碰到过好多次了——本质就是Unix/Linux生态里的工具(比如diff、cmp)默认认为合法的文本文件最后一行必须以换行符\n结尾,哪怕两个文件的可视内容完全一致,只要一个有末尾换行、一个没有,就会被判定为差异。从你给出的cmp提示来看,你的sampleOutput是符合这个规范(有末尾换行)的,但你的程序输出的testOutput没有,所以才会报差异。
具体修复方案(从代码层面根治)
结合你提供的代码片段,有两种简单的修复方式:
方案一:直接在printf中追加换行符
修改你的打印语句,在输出内容末尾加上\n:strcat(word, " [sic]"); printf("%s\n", word); // 这里加了\n,让输出以换行结尾这是最直接的方式,让每一行输出(包括最后一行)都自动带上换行符,完全符合文本文件的规范。
方案二:单独打印末尾换行
如果你的场景中不能直接给printf的内容加换行(比如有特殊格式要求),可以在程序的最后(所有内容打印完成后)单独输出一个换行:// 你的现有打印逻辑 strcat(word, " [sic]"); printf("%s", word); // 最后单独输出换行符 printf("\n");
临时补救方案(针对已生成的文件)
如果已经生成了缺少末尾换行的testOutput文件,也可以用命令行快速补救:
echo >> testOutput
这个命令会给文件追加一个换行符,但这只是临时解决,还是建议从代码层面修复,避免后续重复出现问题。
内容的提问来源于stack exchange,提问作者Bubblethan
相关产品推荐
相关产品推荐

