c語言whilegetcharn為什麼可以過跳過

2021-03-30 12:28:13 字數 2754 閱讀 5023

1樓:金色潛鳥

(1)分清鍵盤緩衝區 和 輸入流資料緩衝區。

當我們在鍵盤上按鍵時,按入的 一個個 鍵值都 在 鍵盤緩衝區 裡,只有當 新行鍵 到來時,

按入的 這些 鍵值(字元們,和新行鍵) 才從 鍵盤緩衝區 送入 輸入流資料緩衝區。

(2)getchar() 是到輸入流資料緩衝區去讀取一個字元,

當 輸入流資料緩衝區 沒有資料時,讀語句 就等待,

當 輸入流資料緩衝區 有 資料 是,就讀 最先 進來的那個字元,讀一個,就從輸入流資料緩衝區裡清除掉這個字元。

getchar() != '\n' 是 進一步 判斷 剛 讀入的這個字元 是不是新行鍵。

(3)while (getchar() != '\n' ) continue;

與 while (getchar() != '\n' ) 空語句 ; 作用 相同,就是 到 輸入流資料緩衝區去讀取一個一個字元,只要讀到的 不是 '\n', 就繼續讀 (讀一個清除一個),直到 讀到 '\n'。其作用等於 「清除 輸入流資料緩衝區」。

(4) 輸入流資料緩衝區 被 清除後,程式 回到

while (getchar() != 'y' );

這時,輸入流資料緩衝區 沒東西。等待 鍵盤緩衝區 把東西 送過來。

鍵盤緩衝區 等待 使用者 拍入 字元,並等待 '\n' 到來,

一旦 '\n' 到來, 鍵盤緩衝區 裡的內容 才送到 輸入流資料緩衝區。

輸入流裡若有 'y', 就 結束 這個 while 迴圈。

否則 while (getchar() != '\n' ) 就會 「清除 輸入流資料緩衝區」,回到等待 'y' 的 迴圈。

2樓:匿名使用者

這段**是跳過所有輸入的字元,直到遇到\n就跳出內層迴圈,去進行是否y的判斷

因為getchar是以回車結束輸入

所以它判斷完是否是y之後 需要過濾掉後面所有的字元,包括\n再開始錄入判斷

c語言程式設計中while (getchar()!='\n')在語句中起到什麼作用?

3樓:舊時的煙雨

表示如果沒有讀到換行符(也就是回車鍵),那麼繼續迴圈。

c語言while(getchar()!='\n');

4樓:匿名使用者

getchar()函式在while迴圈中不斷讀取緩衝區的字元

然後與換行符比較,不等的自熱就捨棄了

所以作用相當於flush緩衝區了

5樓:匿名使用者

這句迴圈執行getchar語句,會依次讀取緩衝區的字元知道回車鍵結束符,讀取完成後執行一句空語句「;」這樣所有緩衝區的字元都讀入程式並依次被覆蓋執行了。

c語言關於while (getchar()!=\n) continue問題 5

6樓:仙亦佛

正因為getchar接收了回車,下面的continue才不會執行,而是執行下面的printf,再回到外while執行程式,此時沒回車了,所以才可以再次輸入。

求大神解釋c語言問題。 劃斜槓的語句 while(getchar()!='\n') continue;是什麼意思?能起到什麼作用呢?

7樓:落葉l無情

迴圈直到接收到換行,迴圈本身不做其他事情,作用就是接收掉由上一句的scanf帶來的換行符,防止while迴圈中的gets接收到錯誤的換行符

8樓:精靈譜尼

continue就是跳過本次迴圈中剩下的內容,直接進入下一輪迴圈

c語言中 while ((str[i]=getchar())!='\n')沒用

9樓:匿名使用者

1、要先輸入bai

字串,再du輸入字元。

2、i對應各個zhi字元,daostr[i]='\0'就把最後一個字元去掉內了,如果恰恰是要找的字容符怎麼辦?

3、index=i了,那麼,idex還怎麼等於i+1?

邏輯錯誤太多,程式混亂,不是換某個字元就能解決問題的,是巧合倒有可能。

10樓:匿名使用者

答: while ((str[i]=getchar())!du='\n') 中(str[i]=getchar()) 的作用是取得 getchar() 函式的

zhi返回值,並非為字

dao符回陣列 str[80]賦值,而函式 getchar() 的返回值是int型別,答

所以用字元陣列取得返回值本身就是錯誤的。

11樓:丿艾瑞灬莉婭

#include

int main()

}if(str[i]=='\0')

printf("not found!\n");

return 0;}

c語言,清空輸入行的語句 while(getchar()!='\n') continue;

12樓:天雲一號

遇到回車就跳出while迴圈,執行後面的語句

13樓:

一行都是以換行符結尾,也就是'\n',這個程式遇到換行符就會終止迴圈,不是換行符就一直迴圈下去,所以就能把一行清空了。那個continue可以去掉。

14樓:匿名使用者

用於清空鍵盤緩衝區的

C語言程式設計,c語言程式設計。

判斷 字串 s是否和 相等 strcmp s,表示s字元陣列是否是等於號加上字串結束符,其實單單比較是否為等於號 改為 c語言程式設計 int mian 應該是int main 你要輸入一個數才行,建議你加一個提示輸入的語句 c語言程式設計。else 非字母 switch read buf brea...

c語言問題,C語言問題?

include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...

c語言問題,C語言問題?

char的範圍是 128 127的 你362就溢位了嘛 是這樣的 0362 0是表示8進位制 於是362在10進位制下是242 242溢位了 128 127 於是結果變成242 128 128 14 要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。整數在記憶體中是以補碼的形式存取的。c 036...