1. 程式人生 > >C語言中scanf、gets、fgets的區別

C語言中scanf、gets、fgets的區別

1.scanf會讀取標準輸入緩衝區中的輸入行內容直到遇到回車或空白(回車、tab、空格)以換行為例,會把換行符之前的資料全部讀入到scanf指定的變數中,回車(\n)依然儲存

在緩衝區中,等待下次讀取標準輸入緩衝區

遇到上面這種情況一般需要加入一下程式碼來清空快取區的行

/*
     這裡getchar()從緩衝區中讀一個字元,直到讀取到回車結束,由於getchar()沒有設定變數儲存讀取的字元,所以讀取的字元全部被拋棄,這樣就把一行內容全部清空了(回車前面的內容包括回車)
*/
while(getchar() != '\n')
         continue;


2.gets只有在遇到回車時才會把緩衝區中的內容全部讀出了,然後去掉回車(\n)把回車前的內容全部寫到變數中

3.fgets使用來處理檔案的,不過可以設定檔案指標是stdin(標準輸入,一般指鍵盤),它在讀取標準輸入時在遇到回車時會直接回車之前包括回車都讀出到指定的變數中