gets()gets_s()puts()函數的使用

從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; 
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章