1

我有这个代码:

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输入,但不幸的是我找不到我的答案。我希望你能澄清我。

4

2 回答 2

2

char[100]is not achar它是一个字符数组(字符串)。如果要比较 C 中的字符串,可以使用头文件中的strcmp(a, b)orstrncmp(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.");
}
于 2013-02-22T17:29:03.210 回答
2

“C”不是字符类型。证明:

printf("sizeof \"C\" == %zu\n", sizeof "C");
printf("sizeof (char) == %zu\n", sizeof (char));

相反,它是一种const char[2]类型;“C”是一个字符串文字。字符串文字转换为字符串,并且字符串由一个额外的'\0'字符终止。这解释了额外的字符。

如果您只打算使用输入中的一个字符,我认为您想要getchar()and 'C'(它们是存储为 的无符号字符值int)而不是scanf("%s", ...)and 。"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 的“The C Programming Language”做好了准备。

于 2013-02-22T17:57:41.457 回答