【问题标题】:C - how to use strcmp for text filesC - 如何将 strcmp 用于文本文件
【发布时间】:2018-04-07 12:13:34
【问题描述】:

我正在编写一些代码来使用 fgets 读取标准输入上的文本文件,该 fgets 比较从第 1 行和第 2 行一直到第 2 行和最后一行的两条相邻行是否相等。我的问题是它一直有效,直到最后一个案例。

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

one
two
three
three
four
four

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

那么多余的字符来自哪里,我该如何克服它,以便进行正确的字符串比较并让 strcmp 返回 0?任何提示都会很棒!

【问题讨论】:

    标签: c strcmp strlen


    【解决方案1】:

    您是否尝试过在读取每一行后删除保存的字符串中的 '\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 值。无论如何感谢您的回答!
    • 好的,没问题。我很高兴你找到了答案。我建议您回答相同的问题,发布您找到的答案,帮助其他人解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多