程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 請問下面這個程序中,輸入3進行響應,會導致什麼不希望的動作?-CSDN問答

請問下面這個程序中,輸入3進行響應,會導致什麼不希望的動作?-CSDN問答

編輯:編程解疑
請問下面這個程序中,輸入3進行響應,會導致什麼不希望的動作?

下面是《C Primer Plus》第8章最後面菜單浏覽一節的內容,其中說到,如果輸入3進行響應,則scanf()將讀取3並留下一個換行符,並把它作為隊列中的下一個字符。對get——choice()的下一次調用會導致_get_first()返回換行符,從而導致不希望的動作。
可是我測試了一下,並沒有什麼問題啊?
這個不希望的動作指的是什麼?
求大神指教一下!
#include
char get_choice(void);
void count(void);
char get_first(void);
int main(void)
{
int choice;

while((choice=get_choice())!='q')
{
    switch(choice)
    {
        case 'a':printf("Buy low, sell high.\n");
                break;
        case 'b':putchar('\a');
            break;
        case 'c':count();
            break;
        default:printf("Program error!\n");
            break;
    }
}
return 0;

}

char get_choice(void)
{
int ch;
printf("Enter the letter of your choice:\n");
printf("a. advice\n");
printf("b.bell\n");
printf("c.count\n");
printf("q.quit\n");
//ch=getchar();
ch=get_first();
while((ch<'a'||ch>'c')&&ch!='q')
{
printf("Please reponse with a,b,c,q.\n");
//ch=getchar();
ch=get_first();
}
return ch;
}

char get_first(void)
{
int ch;
ch=getchar();
while(getchar()!='\n')
continue;
return ch;
}

void count(void)
{
int n,i;

printf("count how far? Enter an integer:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
    printf("%d\n",i);

}

最佳回答:


圖片說明

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved