我使用gets函数和一个简单的if表达式有一个小问题。 它必须检查输入是否正确,在这种情况下应该是:!S
char checkCommand[5];
gets(checkCommand);
if(checkCommand=="!S")....;
else puts("Invalid command!");
为什么我永远不会最终获得表达的真正价值, 即使我打字!S?谢谢你的所有答案!
答案 0 :(得分:4)
因为你没有比较C中的字符串:(checkCommand=="!S")
要比较字符串,您应使用strcmp
或strncmp
或memcmp
函数。
示例:在您的情况下,您可以像这样使用它:
if (strncmp(checkCommand, "!S", 5) == 0)
要详细了解这些功能,请访问this link等。
你也应该注意到警告“gets
很危险......”这样的事情。您应该避免使用gets
并使用fgets
代替。 Chris Jester-Young 在他的回答中解释了原因。
答案 1 :(得分:1)
C没有字符串;它有字符指针,==
只是比较指针。使用strcmp
或strcasecmp
(如果您的系统具有此功能)来比较字符串。请注意,当字符串相等时,strcmp
会返回0。
另外,请避免使用gets
。如果用户输入的字符串超过4个字符(在您的情况下),您的内存的其他部分将开始被潦草地写入。相反,更喜欢使用fgets
,它允许您指定输入缓冲区的大小。
答案 2 :(得分:0)
您必须使用strcmp()函数来比较c
中的两个字符串 int ret;
ret=strcmp(checkCommand,"!s");
if(ret!=0)
{
printf("Invalid Command");
}
答案 3 :(得分:-2)
替换if(checkCommand=="!S")
- > if(!strcmp(checkcommand,"!S"))