char type;
printf("What type of sort would you like to perform?\n");
scanf("%s", &type);
switch(type)
{
case 'bubble':
bubble_sort();
case 'selection':
case 'insertion':
default:
printf("invalid input\n");
}
我正在尝试创建一个程序,根据用户的输入对带有冒泡,选择或插入排序的列表进行排序。
我必须使用开关盒才能这样做。
我定义了一个变量" type"在switch语句之前,然后使用scanf函数为其分配" bubble"," selection"或" inserted"。
但是,当我运行代码并键入" bubble"时,它不执行我的bubble_sort函数(此处未显示),而是转向默认情况。
如何解决此问题?
我不确定是否' char'是定义我的"类型"的正确方法。变量,或者switch语句是否只能用于单个字符。
另外,如果我的代码格式不正确,我很抱歉,因为我是这个网站的新手。
如果我需要在此问题中添加更多信息,请与我们联系!
答案 0 :(得分:1)
C中的字符串是指针类型,因此当您尝试将字符串值放入switch语句或if语句时,您实际上只是比较两个指针而不是它们指向的值。
您需要像strcmp
或strncmp
这样的函数来比较实际指向的内容
所以,它应该看起来像这样;
char type[200];
printf("What type of sort would you like to perform?\n");
scanf("%199s", type);
if (strcmp(type,"bubble")==0) {
bubble_sort();
} else
if (strcmp(type,"selection")==0) {
something_selection();
} else
if (strcmp(type,"insertion")==0) {
something_insetion();
} else {
printf("invalid input\n");
}
答案 1 :(得分:1)
由于type是char并且开关可以使用单个字符,因此您可以使用%c而不是%s扫描一个字符
char type;
printf ( "What type of sort would you like to perform?\n");
printf ( "Enter b for bubble\n");
printf ( "Enter s for selection\n");
printf ( "Enter i for insertion\n");
scanf ( " %c", &type);
switch ( type)
{
case 'b':
bubble_sort();
break;
case 's':
selection_sort();
break;
case 'i':
insertion_sort();
break;
default:
printf("invalid input\n");
}
答案 2 :(得分:0)
这在C中是不可能的。因为要比较两个字符串,应该使用strcmp()函数。但是没有办法在开关盒中添加功能。