`gets()` 函数在 C 语言中用于从标准输入(通常是键盘)读取一行字符串,并将其存储在指定的字符数组中。其基本用法如下:
函数原型
```c
char *gets(char *str);
```
`str` 是一个指向字符数组的指针,用于存储读取的字符串。
函数行为
`gets()` 函数会一直读取输入,直到遇到换行符(`'\n'`)或文件结束标志(EOF)。
它会自动忽略换行符,并在字符串末尾添加一个空字符(`'\0'`)作为字符串的结束标志。
示例代码
```c
include
int main() {
char name;
printf("Enter your name: ");
gets(name);
printf("Your name is: %s", name);
return 0;
}
```
在这个示例中,程序首先定义了一个字符数组 `name`,用于存储用户输入的名字。
然后,程序使用 `gets(name)` 从标准输入读取一行字符串,并将其存储在 `name` 数组中。
最后,程序使用 `printf` 输出用户输入的名字。
注意事项
`gets()` 函数存在安全性问题,因为它不会检查输入的字符数目,容易导致缓冲区溢出。
建议使用 `fgets()` 函数代替 `gets()`,因为 `fgets()` 可以指定最大读取字符数,从而避免缓冲区溢出的问题。
示例代码(使用 `fgets()`)
```c
include
int main() {
char name;
printf("Enter your name: ");
fgets(name, sizeof(name), stdin);
// 去掉换行符
name[strcspn(name, "\n")] = 0;
printf("Your name is: %s", name);
return 0;
}
```
在这个示例中,`fgets()` 函数用于从标准输入读取一行字符串,并将其存储在 `name` 数组中。`strcspn()` 函数用于查找字符串中第一个换行符的位置,并将其替换为字符串结束符(`'\0'`)。这样可以确保读取的字符串不包含换行符。