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...