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
广告