Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C I';我正处于解决这个问题的边缘。看看……谁能告诉我该换什么? #包括 int main() { 字符名[20]; printf(“请键入您的姓名:”; fgets(名称,20,标准DIN); 交换机(名称[20]) { 案例“名称1”: printf(“\n您很好”\n”); 打破 案例“名称2”: printf(“\n您不太好\n”); 打破 案例“名称3”: printf(“\n您是坏的”\n”); 打破 案例“名称4”: printf(“\n您很有个性”; 打破 违约: printf(“\n您输入了一个无效的字母\n”); 打破 } 返回0; }_C - Fatal编程技术网

C I';我正处于解决这个问题的边缘。看看……谁能告诉我该换什么? #包括 int main() { 字符名[20]; printf(“请键入您的姓名:”; fgets(名称,20,标准DIN); 交换机(名称[20]) { 案例“名称1”: printf(“\n您很好”\n”); 打破 案例“名称2”: printf(“\n您不太好\n”); 打破 案例“名称3”: printf(“\n您是坏的”\n”); 打破 案例“名称4”: printf(“\n您很有个性”; 打破 违约: printf(“\n您输入了一个无效的字母\n”); 打破 } 返回0; }

C I';我正处于解决这个问题的边缘。看看……谁能告诉我该换什么? #包括 int main() { 字符名[20]; printf(“请键入您的姓名:”; fgets(名称,20,标准DIN); 交换机(名称[20]) { 案例“名称1”: printf(“\n您很好”\n”); 打破 案例“名称2”: printf(“\n您不太好\n”); 打破 案例“名称3”: printf(“\n您是坏的”\n”); 打破 案例“名称4”: printf(“\n您很有个性”; 打破 违约: printf(“\n您输入了一个无效的字母\n”); 打破 } 返回0; },c,C,您不能使用开关来比较字符串。它只适用于整数类型。此外,字符串常量用双引号(“)表示,而不是单引号(”)。您需要使用strcmp来比较字符串: #include <stdio.h> int main () { char name[20]; printf("Type your name please: "); fgets(name,20,stdin); switch(name[20]) { case 'name1': p

您不能使用
开关来比较字符串。它只适用于整数类型。此外,字符串常量用双引号(
)表示,而不是单引号(
)。您需要使用strcmp来比较字符串:

#include <stdio.h>
int main ()
{
    char name[20];

    printf("Type your name please: ");
    fgets(name,20,stdin);

    switch(name[20])
    {
    case 'name1':
        printf("\nYou are good\n");
        break;
    case 'name2':
        printf("\nYou are not so good\n");
        break;
    case 'name3':
        printf("\nYou are bad\n");
        break;
    case 'name4':
        printf("\nYou are very ba\n");
        break;
    default:
        printf("\nYou entered an invalid letter\n");
        break;
    }
    return 0;
}
开关(表达式)

switch语句中使用的
表达式
必须具有整数或枚举类型,或者属于类类型,在该类中该类具有到整数或枚举类型的单个转换函数


您不能像dbush所说的那样使用
开关来比较两个字符串。最好比较两个字符串并打印所需的结果

还应删除尾随的换行符,否则将无法获得所需的结果:

if (!strcmp(name, "name1")) {
    printf("\nYou are good\n");
} else if (!strcmp(name, "name2")) {
    printf("\nYou are not so good\n");
} else if (!strcmp(name, "name3")) {
    printf("\nYou are bad\n");
} else if (!strcmp(name, "name4")) {
    printf("\nYou are very ba\n");
} else {
    printf("\nYou entered an invalid letter\n");
}

你想做什么?你忘了启用编译器警告。现在这样做,以后再也不要这样做。奇怪的是…直到今天早上我才知道C中的多字符常量,现在我看到了这个无意的用法。Thnx。但我仍然得到“你输入了一个无效的字母”“@code>fgets()的手册页下,
将告诉您,如果输入中有一行,它会在字符串末尾追加一行
换行符。在将输入与字符串进行比较之前,您必须先删除它。然后我将如何执行此操作。你能给我看一下或更正我的代码吗?这将是很大的帮助:)使用刚刚发布的代码dbush。这是正确的做法。您可以在fgets中使用scanf(“%s”名称)。@请检查我编辑的答案以了解您的问题。
fgets(name,20,stdin);
len = strlen(name);
name[len - 1] = '\0';