有一个结构数组,它被传递给accept函数以便在结构中存储一些值。 accept函数中的循环只迭代一次,只到scanf。
struct emp
{
int age;
char name[20];
float sal;
};
void display(struct emp *);
void accept(struct emp *);
void main()
{
clrscr();
struct emp E[3];
accept(E);
display(E);
getch();
}
void accept(struct emp *p)
{
int i;
for(i=0;i<3;i++)
{
printf("Enter age, name and sal: ");
scanf("%d %s %f",&(p+i)->age,(p+i)->name,&(p+i)->sal);
}
}
void display(struct emp *p)
{
int i;
for(i=0;i<3;i++)
{
printf("Result: %d %s %f",(p+i)->age,(p+i)->name,(p+i)->sal);
}
}
请纠正代码。
答案 0 :(得分:1)
如果您使用空格字符输入name
,请尝试以下方式:
scanf("%d %[^\n]s %f",&(p+i)->age,(p+i)->name,&(p+i)->sal);
N.B:我还删除了clrscr()
和getch()
,并使用了int main()
代替void main()
。因为这些都是错误的。
答案 1 :(得分:0)
尝试使用:
scanf("%d %s %f\n",&(p+i)->age,(p+i)->name,&(p+i)->sal);
答案 2 :(得分:-1)
尝试使用gets()函数读取用户输入(读取整行),然后使用sscanf()将数据读入变量。