C 庫 - gets() 函式



C 庫的 gets() 函式用於從標準輸入流 (stdin) 讀取一行,並將其儲存到 str 指向的字串中。它會繼續從輸入流讀取字元,直到遇到換行符或檔案結束。然後,換行符將被空終止符替換,生成的字串將儲存在 str 中。

語法

以下是 C 庫 gets() 函式的語法:

char *gets(char *str);

引數

此函式只接受一個引數:

  • str : 指向字元陣列的指標,輸入字串將儲存在此處。它必須有足夠的空間來儲存輸入字串以及空終止符。

返回值

gets() 函式成功時返回相同的指標 str。失敗或檔案結束時,返回 NULL。

示例 1:從標準輸入讀取字串

此示例使用 gets() 從標準輸入讀取字串,然後列印輸入的字串。

以下是 C 庫 gets() 函式的示例。

#include <stdio.h>

int main() {
   char str[100];
   
   printf("Enter a string: ");
   gets(str);
   
   printf("You entered: %s\n", str);
   
   return 0;
}

輸出

以上程式碼產生以下結果:

Enter a string: Hello, World!
You entered: Hello, World!

示例 2:處理緩衝區溢位

此示例顯示當輸入字串超過緩衝區大小時會發生什麼,從而導致緩衝區溢位。只有適合緩衝區的開頭幾個字元會被儲存,這會導致意外的行為。

#include <stdio.h>

int main() {
   char str[5];
   
   printf("Enter a string: ");
   gets(str);
   
   printf("You entered: %s\n", str);
   
   return 0;
}

輸出

執行以上程式碼後,我們得到以下結果:

Enter a string: Overflow
You entered: Over
廣告