C语言gets函数,fgets函数的使用
gets從標準輸入設備讀字符串函數??梢詿o限讀取,不會判斷上限,以回車結束讀取。函數的具體功能如下所示:從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為‘\0’空字符,并由此來結束字符串。
使用gets函數的時候應注意以下要素:可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字符將被寫入到堆棧中,破壞一個或多個不相關變量的值。這個事實導致gets函數只適用于玩具程序,為了避免這種情況,我們可以用fgets(stdin) 讀取標準輸入來替換gets()。為了向后兼容,gets刪除換行符,gets并不將換行符存入緩沖區。
fgets函數用來從文件中讀入字符串。fgets函數的調用形式如下:fgets(str,n,fp);此處,fp是文件指針;str是存放在字符串的起始地址;n是一個int類型變量。函數的功能是從fp所指文件中讀入n-1個字符放入str為起始地址的空間內;如果在未讀滿n-1個字符之時,已讀到一個換行符或一個EOF(文件結束標志),則結束本次讀操作,讀入的字符串中最后包含讀到的換行符。因此,確切地說,調用fgets函數時,最多只能讀入n-1個字符。讀入結束后,系統將自動在最后加'\0',并以str作為函數值返回。原型是char *fgets(char *s, int n, FILE *stream);
同時注意scanf函數和gets函數混用時的注意事項:
1、gets在scanf前調用,這種調用一般不會出現什么問題,可以正常輸入。
2、scanf在gets前調用,這種情況就會出現問題,當輸入完scanf中的變量時,運行到gets函數,則不讓輸入任何字符,出現此問題的原因是gets函數接收了scanf輸入完后的回車符,解決的辦法是在scanf和gets中間,用getchar函數接收掉回車符,這樣就不會出現任何問題了。
總結
以上是生活随笔為你收集整理的C语言gets函数,fgets函数的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: com.google.gson.Json
- 下一篇: lwl,lwr