清空緩衝區,不讓變量獲取到莫名其妙的值

清空緩衝區,不讓變量獲取到莫名其妙的值

不要懷疑 這個東西也是很重要的,雖然我老講緩衝區,不知道你們有沒有遇見過。下面直接進入正題。

如何清空輸入緩存

清空輸入緩存可以防止自己的變量讀取到緩衝區裡之前輸入的值,而不是自己想要的值。比如:

清空緩衝區,不讓變量獲取到莫名其妙的值

這裡並沒有給我輸入第二個scanf()的機會,直接跳過,顯示了數據,因為第二個scanf()直接在緩衝區裡讀取到了\n。然後就直接輸出了。

這個時候我們就要在第二個scanf()執行前清空緩衝區,雖然會有直接清空輸入緩存區的函數,但是各各平臺,編譯器之間並不一樣,所以我就直接上最用的方法了,居然緩衝區裡面有多餘的數據,那麼我們把多餘的數據讀出來丟掉就可以了。比如:

方法一

清空緩衝區,不讓變量獲取到莫名其妙的值

使用getchar()把字符讀出來,當然例子裡面只可以讀取一個字符,那麼想完全清空緩衝區,可以試一下

while((c = getchar()) != '\n' && c != EOF);

利用循環。確定讀取完了為止。

方法二

清空緩衝區,不讓變量獲取到莫名其妙的值

使用scanf讀取數據,這個時候我們可以試一下這兩條語句

scanf("%*[^\n]"); scanf("%*c");

因為追後會剩下一個\n所以要靠第二條語句清理掉。終於scanf裡面的那些莫名其妙的符號,大家可以看我關於格式化輸入輸出的的文章

如果大家喜歡我的文章可以幫忙,關注,收藏,轉發,評論。謝謝。

如果有不知如何學習編程的人或者想認識更多學習夥伴的人,可以關注私聊發送 “編程”。


分享到:


相關文章: