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';