`gets()` 函数用于从标准输入读取一行数据,直到遇到换行符或文件结束符为止,并将读取的数据存储在指定的字符数组中。它的原型如下:
```c
char *gets(char *str);
```
其中,`str` 是一个指向字符数组的指针,用于存储读取的字符串。
使用示例
```c
include
int main() {
char name;
printf("Enter your name: ");
gets(name);
printf("Your name is: %s", name);
return 0;
}
```
注意事项
安全性问题:
`gets()` 函数不检查输入缓冲区的长度,容易发生缓冲区溢出。因此,建议使用 `fgets()` 函数作为替代,`fgets()` 函数可以指定最大读取字符数,从而避免缓冲区溢出的问题。
文件结束符 (EOF):
`gets()` 函数在遇到文件结束符 (EOF) 时会停止读取,并返回 `NULL`。
换行符:
`gets()` 函数会自动忽略换行符,并将其替换为字符串结束符 `\0'`。
替代方案
由于 `gets()` 函数存在安全隐患,建议使用 `fgets()` 函数代替。以下是使用 `fgets()` 函数的示例:
```c
include
int main() {
char name;
printf("Enter your name: ");
fgets(name, sizeof(name), stdin);
// 去除换行符
name[strcspn(name, "
")] = '\0';
printf("Your name is: %s", name);
return 0;
}
```
在这个示例中,`fgets()` 函数读取一行数据,并存储在 `name` 数组中。`strcspn()` 函数用于查找字符串中的换行符,并将其替换为 `\0'`,以确保字符串的正确终止。