【发布时间】:2016-04-07 07:50:31
【问题描述】:
我正在尝试使用 fgets 根据用户输入的字符串来调用不同的函数。我知道我稍后需要使用 strtok,因为会有空格,例如“load 12”。但是现在,我对使用 strcmp 比较输入的字符串感到困惑。我知道 strcmp 可以这样使用:
int check;
char string[10] = "test";
check = strcmp(string, "test");
// Check will be 0 if true
if (check == 0)
{
printf("same string\n");
}
else
{
printf("not the same\n");
}
可以是真假之类的布尔值吗?如果“test”实际上是“test”,布尔值变为真,那么我将在if语句中使用布尔值。
【问题讨论】:
-
您没有将其用作布尔值。
check是一个整数,并将其与另一个整数进行比较。 -
是的,你可以,但是如果字符串 不同,布尔上下文中的
strcmp返回值将是 true(非零值),如果不是,则返回 false。 .. 这就是为什么我更喜欢比较 `== 0`。 -
如果要针对布尔值
true和false进行测试,不仅逻辑会被反转,而且函数不一定返回1,只有一个正值,所以你不能使用if(strcmp(string, "test") == true) -
C 中没有标准的布尔类型。
ints 用作真值:0代表假,每个非空数字都代表真。 -
@Morovaille 请see this question