#include<stdio.h>
void main()
{
int i;
char a[20];
char b[20];
scanf("%d",&i);
gets(a);
puts(a);
gets(b);
puts(b);
}
此处,在输入&#39; a&#39;之后它打印了i和a的值。它没有取值&#39; b&#39;。我如何插入&#39; b&#39;的价值?
答案 0 :(得分:2)
1)永远不要使用gets
,它已从C标准中删除,并且不安全。请改用fgets
,(例如fgets(a, sizeof a, stdin);
)。请注意,fgets
不会从字符串末尾删除换行符。
2)main
的返回类型为int
,而不是void
。
3)阅读scanf
后,i
不会使用换行符,因此gets(a)
会导致a
为空字符串,因为它会读取从中缓冲的换行符当用户在键入数字后按下返回键。然后gets(b)
会读取您认为的a
。 (在阅读每个值之前打印一些提示,然后你会看到。或者尝试输入: 1 a 输入 b < / KBD> 输入)
建议的解决方案:使用fgets
将i
读入缓冲区,然后例如atoi
或strtol
将其转换为整数。 (或者您可以在fgets
之后额外scanf
或getchar
循环播放,直到您阅读换行符为止,但是,严肃地说,fgets
解决方案是现在更加健壮,值得学习。)
答案 1 :(得分:0)
gets(a);
不要使用gets
它是邪恶的。试试fgets
#include<stdio.h>
int main() //declare here `int main()`
{
int i;
char a[20],c[10];
char b[20];
fgets(c,sizeof c,stdin);
i=atoi(c);
fgets(a,sizeof a,stdin);
puts(a);
fgets(b,sizeof b,stdin);
puts(b);
return 0;
}