c语言结构体 scanf

img

c语言结构体,第一个输入gender值时报错,似乎是冲突,但完全没看明白哪错了

(1)scanf_s(); 在接收数据时,需要指明接收的最大长度。
(2)读取字符串后,需要用getchar()接收一下回车符,避免对下一次输入有影响。
for循环部分代码修改如下:

for (i=0;i<3;i++)
{
    printf("name:"); scanf_s("%s",a[i].name,60); getchar();//接收回车符
    printf("gender:");scanf_s("%s",a[i].gender,10);
    printf("age:");scanf_s("%d",&a[i].age,1); getchar();//接收回车符,避免对下一次输入有影响
    display(a[i]);
}


scanf_s输入字符串和字符时,必须指定字符串的长度。所以scanf_s("%s",a[i].name,60);才行。后面的类似修改即可