BigC
Lv 7
BigC 發問時間: 電腦與網際網路程式設計 · 1 0 年前

WhileLoop與scanf的問題

while((ent = readdir(dir))!=NULL)

{

printf("Open filename= %4s(Y/N)",ent->d_name );

scanf("%c",&option); <-第一次進入回圈不會跑,第二次才跑, 之後也是單數次不會跑,偶數次才跑

if(option=='y')

{output(dirname,ent->d_name);

option='N';

}

}

我要去資料夾裡面抓檔案再選擇是否要OUTPUT出去, 可是單數次Scanf都不會跑

2 個解答

評分
  • 小野
    Lv 4
    1 0 年前
    最佳解答

    因為 scanf 會等到使用者按下 enter 才會從緩衝區讀取資料,所以你按 y 之後再按 enter 會變成輸入兩個字元

    若你只是要讀取單一字元,可改用

    option = getch();

    但是要 #include <conio.h>

    參考資料: myself
  • 在scanf下面加一行getch()或getchar(),

    因為scanf是以enter為輸入結束的信號,

    但scanf並不會把enter的值讀進來,

    這樣就會造成下次再去抓的時後,

    scanf會把前一次輸入的enter吃進來,

    造成單數次不會跑…

    放一個getchar的目的京瑅要把這個enter吃進來,

    不讓scanf把這個enter當成輸入,了解了嗎?

還有問題?馬上發問,尋求解答。