scanf不会在c中指定char,而strcmp正在搞乱我

时间:2018-01-08 13:14:14

标签: c while-loop scanf

这是项目中较小的一段,我正在尝试向用户询问一个字符。

void listBeer(int noRows) {
int endlessLoop = 1;
char sortChoice;
system("cls");

while(endlessLoop == 1)
{
    printf("Do you want to sort by name(n) or by product number(p)?\n");
    scanf("%c", &sortChoice);
    printf("kossan hoppade!\n");
    if(strcmp(sortChoice, "n") == 0 || strcmp(sortChoice, "N") == 0|| strcmp(sortChoice, "p") == 0 || strcmp(sortChoice, "P") == 0 ) {endlessLoop = 0;}
    else {printf("Please answer with n/N for name sorting or p/P\n");}
}

控制台在比较期间崩溃,错误代码为“strcmp使得指针来自整数而没有强制转换”。

我尝试使用“char * sortchoice”而不是然后我的scanf将不会做任何事情,并且在让我输入字符之前循环经过两次。

我猜我要解决的问题不止一个,而且我真的试过粉碎解决方案,但它对我来说仍然没有任何意义。

感谢任何解释!

1 个答案:

答案 0 :(得分:0)

而不是strcmp()使用简单比较,例如sortChoice == 'n'

strcmp()不用于比较单个字符。