我有这段代码:
int p3_2_4()
{
char cargo[100];
printf("Valor: ");
scanf("%s", cargo);
if (cargo == "C")
printf("Chefe");
else if (cargo == "o")
printf("operario");
else if (cargo == "i")
printf("inspetor");
else if (cargo == "m")
printf("mecanico");
else
printf("O valor inserido nao tem correspondencia.");
return 0;
}
我不知道如何使用char类型,我搜索了很多类型的char输入,但遗憾的是我找不到我的答案。我希望你能澄清我。
答案 0 :(得分:2)
char[100]
不是char
字符的数组(字符串)。如果您想比较C中的字符串,可以使用strcmp(a, b)
头文件中的strncmp(a, b, n)
或string.h
函数。
char name[] = "Hunter";
if(!strcmp(name, "Hunter")) // if the return value of strcmp is 0
{
puts("It's me!");
}
else
{
puts("Not me.");
}
答案 1 :(得分:2)
“C”不是char类型。证明:
printf("sizeof \"C\" == %zu\n", sizeof "C");
printf("sizeof (char) == %zu\n", sizeof (char));
相反,它是const char[2]
类型; “C”是一个字符串文字。字符串文字转换为字符串,字符串由额外的'\0'
字符终止。这解释了额外的角色。
我认为您希望getchar()
和'C'
(无符号字符值存储为int
)而不是scanf("%s", ...)
和"C"
,如果您只是打算从输入中使用一个字符。
int cargo = getchar();
if (cargo == 'C')
puts("Chefe");
else if (cargo == 'o')
puts("operario");
else if (cargo == 'i')
puts("inspetor");
else if (cargo == 'm')
puts("mecanico");
else
puts("O valor inserido nao tem correspondencia.");
这个问题似乎对任何阅读我们精美书籍的人来说都很容易。你正在读哪本书?对我而言,似乎你可能已经为K& R的“C编程语言”做好了准备。