关于scanf输入的问题

时间:2011-03-05 07:09:14

标签: c

当我执行以下程序时,它获取用户输入的帐户详细信息,然后正确打印,但它无法读取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');

2 个答案:

答案 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');