当我执行以下程序时,它获取用户输入的帐户详细信息,然后正确打印,但它无法读取opt值(y / n)。它会再次自动调用。当用户输入“n”时,如何让程序退出?
char opt;
do
{
//Getting user input
printf("\n Enter the Account Number:\n ");
scanf("%d",&gAccNo_i);
printf("\n Enter the Account Holder's Name:\n ");
scanf("%s",gCustName_c);
printf("\n Enter the Balance Amount:\n ");
scanf("%f",&gBlncAmt_f);
//Printing the input data.
printf("\n Account Number : %d",gAccNo_i);
printf("\n Customer Name : %s",gCustName_c);
printf("\n Balance Amount : %f",gBlncAmt_f);
printf("\n Do u want to wish to continue?(y/n)");
scanf("%c",&opt);
}while(opt!='n');
答案 0 :(得分:3)
使用opt=getch();
代替scanf("%c",&opt);
或
scanf
读取前一行留在缓冲区中的空白。要跳过空格,请在“%c”中添加一个空格:
scanf(" %c", &opt);
答案 1 :(得分:0)
scanf("%c",&opt);
实际上会读取空格/换行符。这显然不等于'n'。
您可能希望将输入作为字符串,然后验证第一个字符是否为'n'。
char opts[5];
scanf("%s",opts);
while(opts[0] !='n');