我正在学习C,我有一个程序可以使用scanf获取用户输入(我知道这不安全,但这只是为了我的学习(。我遇到的问题是,在代码的一部分中,我检查input[0] == 'n'
,然后我做一件事,然后我有另一个命令检查,检查我的输入是否等于"n","o"。
我的问题是,如果我发送"否",则满足第一个检查。我通过input[0] == 'n' && input[1] == NULL
解决了这个问题,但现在我得到了以下错误:warning: comparison between pointer and integer ('char' and 'void *')
如何检查是否只有一个字符符合要求,或者如何不使用编译器标志来解决此错误。我想要更干净的代码。我没有一个";最小可重复性实例";因为这段代码(1(足够简单,(2(我的代码很乱,复制粘贴并尝试15分钟没有好处,因为。。。好原因1。提前感谢!
如何检查是否只有一个字符符合
测试数组中的第二个字符是否为空字符。
// if (input[0] == 'n' && input[1] == NULL)
if (input[0] == 'n' && input[1] == ' ')
NULL
最好用于测试指针是否等于空指针。
如果你不想告诉我,我不确定这是你要问的。我想你想检查3种情况:你的输入是no
(第一次检查,第二次检查合格(,你的输入不是no
(第一次和第二次检测不合格(,以及你的输入为n + something!='o'
(第一次检测合格,第二次检查不合格(。如果这是你需要的,我会这样做:
char input[2];
printf("Insert input: ");
scanf(" %s", input);
// first check
if (input[0]=='n') {
printf("first check okn");
/* do stuff */
if (input[1]=='o') {
printf("second check okn");
/* do stuff */
}
}
else {
printf("first check failedn");
}