關於scanf c , ch 直接跳過的問題

2021-06-19 20:01:11 字數 482 閱讀 9892

今天做乙個測試程式,遇到scanf("%c",&ch)直接跳過的問題。但為什麼會跳過呢,我在網上查詢了下,以下摘錄別人的解釋:

scanf("%c",&ch)直接跳過的問題,糾其根源,我們先來了解一下scanf()是怎麼接受資料的,

當我們的pc指向scanf這句時,系統並不是等待使用者輸入,而是判斷輸入緩衝區有沒有符合格式的內容。如果有,則直接讀取。知道了這個,我就應該明白,scanf("%c",&ch);不是沒有讀到資料,而是讀到了我們不知道的資料。那問題又來了,它讀到了什麼?好吧,這就要說到行快取。我們用scanf()的時候都要按下enter鍵,那enter鍵按了之後去哪兒了?好吧,問題基本應該知道了,enter鍵也進入了輸入快取區,也就是scanf("%c",&ch);讀到了'\n';解決辦法,很簡單,既然快取區有東西,那我們就清空它唄~~

setbuf(stdin,null);(這個windows和linux下都可以)

fflush(stdin);(這個只能windows)

SourceTree 跳過註冊登入直接使用

windows 1.開啟資源管理器,將下面的 複製到位址列,開啟sourcetree的資料夾 2.在該資料夾下建立乙個json檔案,檔名為accounts.json,複製下面的 到 json 檔案中 baseurl credentials isdefault false mac 命令終端輸入defa...

Git 跳過暫存區直接提交

儘管使用暫存區域的方式可以精心準備要提交的細節,但有時候這麼做略顯繁瑣。git 提供了乙個跳過使用暫存區域的方式,只要在提交的時候,給git commit加上 a選項,git 就會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而跳過git add步驟 git status on branch mas...

Vue專案中跳過登入頁面直接訪問某個頁面

首先要在router下的index.js中新增路由,照葫蘆畫瓢就行 接著是permission.js,網上很多資料都說是mian.js,但是我的這個專案是在permission.js裡面 這裡還是整個拿過來,重要的都有註解 import router from router import store...