標籤: 暫無標籤

gets(字元指針),函數名。從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為null值,並由此來結束字元串。

  【1】函數:gets(字元指針)

  【2】頭文件:stdio.h(c中),c++不需包含此頭文件

  【3】原型:char*gets(char*buffer);

  【4】功能:從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為null值,並由此來結束字元串。

  【5】返回值:讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

  【6】注意:本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值,為了避免這種情況,我們可以用fgets()來替換gets()。這個事實導致gets函數只適用於玩具程序。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩衝區。

  【7】示例:

  C:#include "stdio.h" 這個頭文件包涵gets函數

  void main()

  {

  char str1[5];

  gets(str1);

  printf("%s\n",str1);

  }

  C++:

  #include<iostream>

  using namespace std;

  int main()

  {

  char str&#91;100&#93;;

  gets(str);

  cout<<str<<endl;

  return 0;

  }

  gets()函數用來從標準輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加'\0'字元。其調用格式為:

  gets(s);

  其中s為字元串變數(字元串數組名或字元串指針)。

  gets(s)函數與scanf("%s",&s)相似,但不完全相同,使用scanf("%s",&s) 函數輸入字元串時存在一個問題,就是如果輸入了空格會認為字元串結束,空格后的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元串直到遇到換行為止。

  說明:

  gets(s) 函數中的變數s為一字元串或字元指針。如果為單個字元,編譯連接不會有錯誤,但運行後會出現」Null pointer asignment"的錯誤。

  【8】寬字元版本,當使用unicode寬字元文本時,使用這個函數 _getws();
下一篇[MySQL AB]

相關評論

同義詞:暫無同義詞