`gets()` 是 C 语言中的一个标准库函数,用于从标准输入(通常是键盘)读取一行并存储在字符串中。该函数接受一个字符数组(或字符指针)作为参数,并读取直到遇到换行符(Enter 键)为止。这个函数在读取输入时不会检查缓冲区边界,因此可能会导致缓冲区溢出,从而引发安全问题。因此,在现代编程实践中,建议使用 `fgets()` 函数替代 `gets()` 函数,因为 `fgets()` 函数提供了对输入长度的控制,从而避免缓冲区溢出的问题。
这是 `gets()` 函数的基本语法:
```c
char *gets(char *str);
```
其中,`str` 是一个指向字符数组的指针,用于存储读取的字符串。函数返回的是指向传入的 `str` 的指针。如果发生错误或遇到 EOF(文件结束),则返回 NULL。
由于 `gets()` 的安全风险,它已被视为过时的函数并且在某些编程环境中已经被弃用。建议总是使用 `fgets()` 来替代它。下面是一个使用 `fgets()` 的例子:
```c
#include
int main() {
char str[100]; // 定义足够大的字符数组来存储输入字符串
printf("请输入一行文本:\n");
fgets(str, sizeof(str), stdin); // 使用 fgets() 读取一行文本到 str 中
printf("你输入的文本是:\n%s\n", str); // 输出输入的文本
return 0;
}
```
在这个例子中,`fgets()` 函数会读取最多 `sizeof(str) - 1` 个字符(这里假设字符串的最后一个位置是字符串终止符 '\0')。这种方式可以避免缓冲区溢出的问题。