關於gets函式的一些注意事項

2021-06-13 02:30:01 字數 1244 閱讀 1749

函式:gets(字元

指標)標頭檔案:stdio.h(c中),c++不需包含此標頭檔案

原型:char*gets(char*buffer);

功能:從stdio流中讀取字串,

直至接受到換行符或eof時停止,並將讀取的結果存放在buffer

指標所指向的字元

陣列中。

換行符不作為讀取串的內容,讀取的換行符被轉換為null值,並由此來結束字串。

返回值:讀入成功,返回與引數buffer相同的

指標;讀入過程中遇到eof(end-of-file)或發生錯誤,返回null指標。所以在遇到返回值為null的情況,要用

ferror或

feof函式檢查是發生錯誤還是遇到eof。

注意:本函式可以無限讀取,不會判斷上限,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。如果溢位,多出來的字元將被寫入到

堆疊中,這就覆蓋了堆疊原先的內容,破壞乙個或多個不相關

變數的值,為了避免這種情況,我們可以用fgets()來替換gets()。這個事實導致gets函式只適用於玩具程式。在v7的手冊(2023年)中說明:為了

向後相容,gets刪除換行符,gets並不將換行符存入緩衝區。

示例:c:

#include "stdio.h" //這個標頭檔案包涵gets()函式

int main(void)

c++:

#include

using namespace std;

int main()

gets()函式用來從標準

輸入裝置(鍵盤)讀取

字串直到換行符結束,但換行符會被丟棄,然後在末尾新增'\0'字元。其呼叫格式為:

gets(s);

其中s為字串

變數(字串

陣列名或字串

指標)。

gets(s)函式與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函式輸入

字元 串時存在乙個問題,就是如果輸入了空格會認為字串結束,空格後的字元將作為下乙個輸入項處理,但gets()函式將接收輸入的整個字串直到遇到換行為止。

說明:gets(s) 函式中的

變數s為一

字串或字元

指標。如果為單個

字元,編譯連線不會有錯誤,但執行後會出現」null pointer asignment"的錯誤。

一些注意事項

0.解題思路 a.普通思路 b.遞迴 bfs dfs c.動態規劃 比遞迴快 d.雙指標 比for迴圈快 如 快慢指標方法 e.用棧 1.陣列初始化 int a new int 5 a 0 預設為0.二維陣列也一樣。boolean b new boolean 5 b 0 預設為false.strin...

函式過載的一些注意事項

函式過載時函式中比較重要的語法點,由於函式的其他機制,如隱性型別轉換,預設引數等,使得函式過載容易使人迷惑,哪些情況下的語法是錯誤的。函式過載是函式的引數型別個數不同導致的,函式過載是允許隱性型別轉換發生的。比如 void func cout func 此時的輸出結果是func int a 編譯器會...

php XPATH一些注意事項

40集 建立乙個dom物件並讀取xml檔案到記憶體中 dom new domdocument 1.0 utf 8 dom load book.xml 建立乙個xpath物件 xpath new domxpath dom sql bookstore book 1 title 注意此處路徑數字從1開始,...