#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char aa[35];
int a;
scanf("%d",&a);
gets(aa);
puts(aa);
}
它没有从用户那里获取字符串,但是如果我在整数值之前取字符串就可以了。
答案 0 :(得分:0)
尝试放置另一个gets():
gets(aa);
gets(aa);
答案 1 :(得分:0)
一旦scanf("%d",&a);
从stdin
中取出数字字符以形成int
的{{1}},就完成了。它不会消耗可能跟随它的a
。
'\n'
,直到gets(aa);
消费数据。
输入如 1 2 3 x y 输入到下面会将'\n'
放入123
,将a
放入"xy"
。
aa
输入如 4 5 6 输入到上面将scanf("%d",&a);
gets(aa);
放入{{ 1}}和456
加入a
。
建议使用""
并添加错误处理。
aa
答案 2 :(得分:0)
有关详细信息,请搜索Google有关缓冲IO的信息
在这种情况下,因为当你首先输入一个数字时,你还必须按“输入”,这意味着在接受一个数字后会有一个“\ n”字符停留
因此,在输入任何字符串之前,请记住清除缓冲的IO,有两种方法可以做到这一点
Flush(stdin);
要么
_flushall();
答案 3 :(得分:-1)
在scanf之间使用fflush并清除缓冲区。它会完美地运作。
#include<stdio.h>
void main()
{
char aa[20];
int b;
scanf("%d",&b);
fflush(stdin);
gets(aa);
puts(aa);
getchar();
}
建议你不要使用gets(),因为它不验证内存的大小。