C 获得;分段故障(堆芯倾倒)“;提示用户输入后
Switch语句会导致“分段故障(堆芯转储)”,而不管情况如何 我尝试更改“command”的数据类型,但没有得到任何其他结果C 获得;分段故障(堆芯倾倒)“;提示用户输入后,c,C,Switch语句会导致“分段故障(堆芯转储)”,而不管情况如何 我尝试更改“command”的数据类型,但没有得到任何其他结果 char command; int temp; while(1) { printf("Enter command ('d'/'m'/'s'/'r'): "); scanf("%c", command); printf("\n"); switch(c
char command;
int temp;
while(1) {
printf("Enter command ('d'/'m'/'s'/'r'): ");
scanf("%c", command);
printf("\n");
switch(command) {
case 'd' :
printf("display which employee (0-19)?\n");
scanf("%i", temp);
//display(temp);
printf("displayed");
break;
case 'm' :
printf("modify which employee (0-19)?\n");
scanf("%i", temp);
//modify(temp);
printf("modified");
break;
case 's' :
//save();
printf("saved");
break;
case 'r' :
//retrieve();
printf("retrieved");
break;
default :
printf("Command not recognized\n");
}
}
希望根据相关案例打印操作。相反,它只打印“分段错误(内核转储)”消息,而不考虑。格式说明符希望传入
字符的地址,即字符*
。您正在传入一个char
。进一步向下的%i
和int
也是如此。使用错误的格式说明符调用,这在本例中表现为崩溃
您需要传递相关变量的地址,以便scanf
可以修改它们。另外,对于%c
,格式字符串前面应该有一个空格,以便使用输入缓冲区中剩余的任何空格
所以你想要:
scanf(" %c", &command);
以及:
%c
格式说明符要求传入字符的地址,即字符*
。您正在传入一个char
。进一步向下的%i
和int
也是如此。使用错误的格式说明符调用,这在本例中表现为崩溃
您需要传递相关变量的地址,以便scanf
可以修改它们。另外,对于%c
,格式字符串前面应该有一个空格,以便使用输入缓冲区中剩余的任何空格
所以你想要:
scanf(" %c", &command);
以及:
scanf(“%i”,温度)代码>-->scanf(“%i”&temp)
由于temp
是一个int
变量,因此需要提供&
来存储用户输入。还要仔细阅读编译器警告并解决它们,不要忽略它们。scanf(“%i”,temp)代码>-->scanf(“%i”&temp)
由于temp
是一个int
变量,因此需要提供&
来存储用户输入。还要仔细阅读编译器警告并解决它们,不要忽略它们。