Доступ к массиву структуры с помощью указателя. (Что-то не так с кодом)

c pointers structure

60 просмотра

3 ответа

Существует массив структур, который передается функции принятия, чтобы сохранить некоторое значение в структуре. Цикл внутри функции 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);
}
}

Пожалуйста, исправьте код.

Автор: Apoorv singhai Источник Размещён: 08.11.2019 11:32

Ответы (3)


1 плюс

Решение

Если вы принимаете ввод nameс пробелами, попробуйте так:

scanf("%d %[^\n]s %f",&(p+i)->age,(p+i)->name,&(p+i)->sal);

NB: я тоже убрал clrscr()и getch()и использовал int main()вместо void main(). Потому что они давали ошибки.

Автор: Shahid Размещён: 20.08.2016 04:10

0 плюса

Попробуйте использовать:

scanf("%d %s %f\n",&(p+i)->age,(p+i)->name,&(p+i)->sal);
Автор: Amber Beriwal Размещён: 20.08.2016 04:03

-1 плюса

Попробуйте вместо этого прочитать пользовательский ввод, используя функцию gets () (читает целую строку), а затем используйте sscanf () для чтения данных в переменные.

Автор: Constantine Georgiou Размещён: 20.08.2016 04:08
32x32