2016-11-21 71 views
1

我是C初學者,我在c結構中遇到麻煩,我創建了一個結構p [2]的數組,然後接受了輸入並只是打印了它,但結果是意外的,struct被定義爲意外的結果結構C

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

回答

1

這是因爲fgets()是獲得在輸入緩衝區中留下的線尾掃描數字。將whitspace添加到數字格式字符串的末尾。

另外,您應該始終檢查scanf()在依靠它之前是否成功。 I/O很脆弱,可能會失敗,特別是當另一端是人類時。