從stdin流中讀取字符串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作爲讀取串的內容,讀取的換行符被轉換爲null值,並由此來結束字符串。
gets
包含頭文件
string.h
從stdin流中讀取字符串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作爲讀取串的內容,讀取的換行符被轉換爲null值,並由此來結束字符串。
輸出可以考慮puts()函數的應用輸出完後會自動加一個回車換行符號
char* gets(char* buffer)
返回值
讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值爲NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。
本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字符將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變量的值,爲了避免這種情況,我們可以用gets_s()來替換gets()(但是這個get_s()函數不是標準庫函數,是擴張的函數,各個編譯器支持程度不一樣)。這個事實導致gets函數只適用於玩具程序。fgets()函數以考慮溢出的問題,但是其區別在於直接將換行回車存入不轉換成'\0’
實例
int main(void)
{
char str[5];
gets(str);
printf("%s ",str);
return 0;
},
puts包含頭文件
stdio.h
向終端輸出一個字符串
格式
int puts(char *str);
str:需要輸出的字符串,可以是字符數組名(字符串),也可以是字符串常量(包括轉義字符)
注意的是輸出完後會自動加一個回車換行符號
返回值
輸出的字符串長度,如果輸出失敗返回值爲EOF
int main(void)
{
char str[] = "this is a test";
puts(str);
puts(" ");
puts("this is a test ");
return 0;
}