【问题标题】:strcmp() not returning 0 when strings are equal当字符串相等时 strcmp() 不返回 0
【发布时间】:2014-11-09 17:10:44
【问题描述】:

我见过类似的问题,但没有一个对我有帮助。我想检查用户输入是否等于“q”,如果它从程序中退出但永远不会返回 0。

我已经看到字符串需要以 NULL (\0) 值终止,但我不知道如何以我的工作方式做到这一点。我有以下内容:

char *input = "\0";

linelen = getline(&input,&len,stdin);
        if(strcmp(input, "q")==0)
        {
            return;
        }

我的问题是,如果可能的话,我真的很想使用 getline,因为它非常适合我需要做的事情,如果我将输入更改为 char *input[2],我无法使用 getline 而不会造成问题。

(当我在程序中输入 q 时,它会返回 10。另外,我对 C 很陌生,对于任何愚蠢的错误,我深表歉意。)

编辑:执行以下操作时,我得到了 10 的结果:

int j = strcmp(input, "q");
printf("%d", j);

INPUT:
q
OUTPUT:
10

【问题讨论】:

  • 我会说得更清楚。请一分钟
  • 您的问题写得很糟糕,我们必须猜测您没有向我们展示的代码的作用。请(重新)阅读说明如何在此处提问的帮助文本。对于问题本身,getline 还将终止的'\n' 字符读入缓冲区,所以难怪两个字符串不一致。只需检查input[0] == 'q'。在执行getline 之前,也无需将字符串文字分配给input。如果你想初始化它(一个好主意),请改用0。

标签: c return compare getline


【解决方案1】:

getline 从输入中读取一行包括行尾的换行符。所以你输入的q实际上是字符串"q\n",它和"q"不一样,所以比较不同。

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多