Я пытаюсь написать простую программу для сбора данных для определенного количества студентов и вывода ее в конце. После ввода данных для одного ученика моя программа выйдет из строя.простой указатель на структуры
Вот код:
#include <stdio.h>
#include <stdlib.h>
typedef struct Student Student;
struct Student{
char name[20];
char lastname[20];
int age;
};
main() {
int i;
int n;
scanf("%d",&n);
Student *pStudents = NULL;
pStudents = (Student*)malloc(n*sizeof(Student));
for(i=0;i<n;i++) {
printf("Enter the students name: \n");
scanf("%s",(pStudents+i)->name);
printf("Enter lastname: \n");
scanf("%s",(pStudents+i)->lastname);
printf("Enter age: \n");
scanf("%d",(pStudents+i)->age);
}
for(i=0;i<n;i++) {
printf("%s",(pStudents+i)->name);
printf("%s",(pStudents+i)->lastname);
printf("%d",(pStudents+i)->age);
}
}
Спасибо заранее.
Ошибка была, очевидно, scanf, но почему вы используете (pStudents + i) вместо pStudents [i]? Это, по крайней мере, показало бы, что pStudents - это массив. –
Справа. Я забыл указатель - это то же самое, что и массив. Я по-прежнему новичок в указателях, но это, безусловно, делает код более понятным для чтения. – Jay
Присвоение 'NULL'' pStudents' полностью избыточно; возвращаемое значение 'malloc()' перезаписывается немедленно. –