C語言中從鍵盤輸入的函數有好幾個,fgets就是其中之一。
今天我用fgets函數寫代碼時也遇到一個問題:在第一次調用fgets函數後程序不會阻塞,而是輸出一個回車鍵,待第二次遇到fgets函數時,程序才阻塞。
經過好長時間的排查,才發現問題所在——在第一次調用fgets函數時,輸入緩衝區有內容,導致fgets直接從輸入緩衝區取出了數據進行輸出,就會有上述問題出現。
問題找到了,解決起來就簡單了,只需要在使用fgets之前將輸入緩衝區清空一遍,就可以了。
清空緩衝區的辦法有很多,這裏我爲大家提供一個函數及其用法:setbuf(stdin,NULL)
其他的辦法讀者可自行百度一下。