gets() 函數
【1】函數:gets(字符指針)
【2】頭文件:stdio.h(c中),c++不需包含此頭文件
【3】原型:char *gets( char *buffer );
【4】功能:從stdio流中讀取字符串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為null值,並由此來結束字符串。
【5】注意:本函數可以無限讀取,不會判斷上限,所以程序員應該確保str的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字符將被寫入到緩沖區后面的內存位置,這將破壞一個或多個不相關變量的值。這個事實導致gets函數只適用於玩具程序。
gets()函數用來從標准輸入設備(鍵盤)讀取字符串直到回車結果,但回車不屬於這個字符串,系統自動用'\0'代替最后的換行符。其調用格式為:
gets(s); 其中s為字符串變量(字符串數組名或字符串指針)。
gets(s)函數與scanf("%s:",&s)/* scanf("%s",s) */相似,但不完全相同,使用scanf("%s",&s);函數輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結束,空格后的字符將作為下一個輸入項處理,但gets()函數將接收輸入的整個字符串直到遇到回車為止。需要注意的是,在執行過之前的讀入操作后,gets函數會將行末的回車符當作一個空行讀入,因此有必要時可以寫兩句。
說明: gets(s);函數中的變量s為一字符串。如果為單個字符,編譯連接不會有錯誤,但運行后會出現”Null pointer asignment"的錯誤。
puts()與其用法基本相同,功能相反,作用為輸出一個字符串。 ——————百度百科
