strcmp()在字符串相等时不返回0

时间:2014-11-09 17:10:45

标签: c return compare getline

我见过类似的问题,但没有人帮助过我。我想检查用户输入是否等于" 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

1 个答案:

答案 0 :(得分:1)

getline从输入包含行尾的新行中读取一行。因此,您q的输入实际上是字符串"q\n",它与"q"不同,因此会进行不同的比较。