使用指针访问结构数组。 (代码有问题)

时间:2016-08-20 16:00:26

标签: c pointers structure

有一个结构数组,它被传递给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);
}
}

请纠正代码。

3 个答案:

答案 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()将数据读入变量。