【发布时间】: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。