我为学校项目编写了这段代码,我遇到了以下问题。
当我第一次选择1时,我的程序运行正常,但是当我第二次选择w或r时,出现问题。 2 ifs中没有一个正在运行。我打印usr_ans2来查看scanf和usr_ans2变量的结果是一个奇怪的问号,而不是我输入的w或r字符。我也尝试了scanf(" %c", usr_ans2)
。问号没有出现,但if命令仍未运行。
int main(){
int usr_ans1;
char usr_ans2;
while(1){
printf("\nSelect action: (1-3)\n");
scanf("%d", &usr_ans1);
if(usr_ans1 == 1){
printf("Select to write or read from a file the text: (w/r) ");
usr_ans2 = scanf("%c", &usr_ans2);
if(usr_ans2 == 'w')
printf("You selected to write");
else if(usr_ans2 == 'r')
printf("You selected to read");
}
else if(usr_ans1 == 2){
printf("Example1");
}
else if(usr_ans1 == 3){
printf("Example2");
}
return 0;
}
答案 0 :(得分:2)
scanf()
中的 usr_ans2 = scanf("%c", &usr_ans2);
将返回1(成功转换的说明符的数量)或EOF
(当文件结束或错误发生时,某些负值如-1)。 if(usr_ans2 == 'w')
永远不会成真。
尝试
// usr_ans2 = scanf("%c", &usr_ans2);
scanf(" %c", &usr_ans2); // add the space too to skip leading white-space