C-如何对文本文件使用strcmp

C-如何对文本文件使用strcmp,c,strcmp,strlen,C,Strcmp,Strlen,我正在编写一些代码,使用fgets读取stdin上的文本文件,fgets比较从第一行和第二行到第二行和最后一行的两个相邻行,以确保相等。我的问题是,它一直有效,直到最后一个案例 例如,假设我们的文本文件包含以下内容: one two three three four four 当我在最后两行使用strcmp时,返回-1,当我在两个'four'上使用strlen时,分别得到5和6 那么,额外的字符来自哪里?我如何克服这些问题,以便进行适当的字符串比较,并让strcmp返回0?任何提示都很好 您是

我正在编写一些代码,使用fgets读取stdin上的文本文件,fgets比较从第一行和第二行到第二行和最后一行的两个相邻行,以确保相等。我的问题是,它一直有效,直到最后一个案例

例如,假设我们的文本文件包含以下内容:

one
two
three
three
four
four
当我在最后两行使用strcmp时,返回-1,当我在两个'four'上使用strlen时,分别得到5和6


那么,额外的字符来自哪里?我如何克服这些问题,以便进行适当的字符串比较,并让strcmp返回0?任何提示都很好

您是否尝试过删除读取每行后保存的字符串中的“\n”字符

fgets(line, SIZE, FILE) // Save line readed inside var line

line[strcspn(line, "\n")] = '\0'; // Remove '\n' inside stored var

删除“\n”字符应该可以解决您的问题。

我有,但差距仍然存在,我仍在找出最后一行中缺少的内容。更新:很抱歉这个愚蠢的问题,我所要做的就是在strcmp语句中连接回车符和换行符,因为13和10都是ASCII值。无论如何,谢谢你的回答!好的,没问题。我很高兴你找到了答案。我建议你回答同样的问题,张贴你找到的答案,帮助其他人解决你的问题。