gets和getchar的连用
时间: 2023-12-09 12:35:56 浏览: 102
为了避免缓冲区中的回车对后续输入造成影响,有时候我们需要在使用`gets`函数前使用`getchar`函数将缓冲区中的回车读走。例如,以下代码可以读入两行字符串并输出它们:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
printf("请输入第一行字符串:");
gets(str1);
getchar(); // 读走缓冲区中的回车
printf("请输入第二行字符串:");
gets(str2);
printf("您输入的两行字符串分别是:%s 和 %s\n", str1, str2);
return 0;
}
```
在上述代码中,我们在第一个`gets`函数前使用了`getchar`函数将缓冲区中的回车读走,以避免对后续输入造成影响。
相关问题
gets和getchar
gets和getchar都是C语言中用于输入字符的函数,但是它们有一些区别。
1. gets函数
gets函数用于从标准输入设备(通常是键盘)读取一行字符串,直到读取到换行符为止。它会将读取到的字符串存储到指定的字符数组中,并在字符串末尾添加一个空字符'\0'。gets函数的语法如下:
```c
char *gets(char *str);
```
其中,str是一个指向字符数组的指针,用于存储读取到的字符串。需要注意的是,gets函数存在缓冲区溢出的风险,因此在使用时应该特别小心。
以下是一个使用gets函数读取字符串的例子:
```c
#include <stdio.h>
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str);
printf("你输入的字符串是:%s\n", str);
return 0;
}
```
2. getchar函数
getchar函数用于从标准输入设备(通常是键盘)读取一个字符,它会忽略空格、制表符和换行符等空白字符。getchar函数的语法如下:
```c
int getchar(void);
```
getchar函数返回读取到的字符的ASCII码值,如果读取失败则返回EOF(-1)。以下是一个使用getchar函数读取字符的例子:
```c
#include <stdio.h>
int main() {
char c;
printf("请输入一个字符:");
c = getchar();
printf("你输入的字符是:%c\n", c);
return 0;
}
```
gets和getchar区别
gets和getchar都是C语言中输入函数,但是它们的用法和作用不同。
getchar是一个逐个读取字符的函数,可以用于读取单个字符、转换字符型数字等。它的函数原型为:int getchar(void)。
gets则是一个读取字符串的函数。可以输入一行字符串,直到遇到回车符(\n)为止。它的函数原型为:char *gets(char *str)。
需要注意的是,gets函数在读取字符串时不对读入字符个数作限制,所以容易发生溢出等错误。推荐使用更为安全的fgets函数代替。
阅读全文