我是C的初学者,我在c中遇到结构问题,我创建了一个结构p [2]的数组,然后取了输入并打印出来但结果是意外的,结构被定义为< / p>
struct person{
int eno;
float height;
char name[10];
}p[2];
和主要功能为
int main(void)
{
int i;
for(i=0;i<2;i++)
{
scanf("%d%f",&p[i].eno,&p[i].height);
fgets(p[i].name,10,stdin);
}
for(i=0;i<2;i++)
{
printf("%d\n",p[i].eno);
printf("%f\n",p[i].height);
puts(p[i].name);
}
return 0;
}
Input :
10
11.0
abcdef
11
12.3
xyzpa
Output:
10
11.000000
0
0.000000
abcdef
以下是Ideone链接:http://ideone.com/8gIQU3
答案 0 :(得分:1)
这是因为fgets()
通过扫描数字在输入缓冲区中留下了行尾。将whitspace添加到数字格式字符串的末尾。
此外,在依赖它之前,您应该始终检查scanf()
是否已成功。 I / O很脆弱,可能会失败,尤其是当另一端是人类时。