scanf("%c",&x);
scanf("%c",&y);
其中在第二次使用scanf時, 可能會有問題. 主要原因為第一次輸入字元x時,
我們需要須入Enter進入後面的statement, 但其在電腦會判讀我們所key的字元
同時也把Enter也記錄進去緩衝區裡頭, 等到第二次對字元y作scanf時,
它會直接判讀上一次留下的Enter鍵. 在此Enter其實是被當成一個字元\n被暫存起來,
這樣會造成無法正確輸入字元y.
如何有效避免這種問題, 在此來分享解決Enter暫存問題
方法(1)
scanf("%c",&x);
scanf(" %c",&y); //在第二個scanf的%c前加入一個空格方法(2)
scanf("%c/n",&x); //在第一個scanf的%c後加入一個/n
scanf("%c",&y);方法(3)
scanf("%c%*c",&x); //在第一個scanf的%c後加入%*c跳脫字元scanf("%c",&y); 方法(4)
x=getche();y=getche();方法(5)
scanf("%c",&x);fflush(stdin); //使用fflush函數來清空緩衝區資料("%c",&y); 除了上述方法外, 仍有許多不同的方法可以克服, 如加上while判斷字元是否為/n, 如果不是才能執行, 有興趣的朋友可以去網路上作 scanf, Enter關鍵字搜尋. 就可以找到許多不同種的方法.
沒有留言:
張貼留言
請留下大名與意見