Я новичок в C. Я пытаюсь сделать функцию addStudent()
следующим образом:
В настоящее время я застрял над двумя проблемами:
- Независимо от того, что я ввел, имя объекта, середина , и final остаются пустыми или равными нулю.
- Если я изменю параметр
name
на *name
, он будет принимать только первый символ. ie, если введено "James"
, требуется только "J".
ОБНОВЛЕНИЕ: Сначала я подумал, что это проблема scanf, но даже когда я удалил его и инициализировал переменные, объект std все еще пуст. Мне все еще было интересно, как правильно передавать аргументы новому объекту, как в этом примере.
void addStudent(struct Student array[SIZE], int *currentSize){
char name[20];
int mid, final;
printf("Enter name: ");
scanf("%s", name);
printf("Enter midterm grade: ");
scanf("%d", &mid);
printf("Enter final grade: ");
scanf("%d", &final);
struct Student std = {*name, mid, final};
array[0] = std;
++*currentSize;
}
Структура ученика:
struct Student{
char name[20];
int midterm;
int final;
};
ИСПРАВЛЕНО: Если я напрямую передал переменные в scanf, все работало нормально.
void addStudent(struct Student array[], int *currentSize){
printf("Enter name: ");
scanf("%s", array[*currentSize].name);
printf("Enter midterm grade: ");
scanf("%d", &array[*currentSize].midterm);
printf("Enter final grade: ");
scanf("%d", &array[*currentSize].final);
++*currentSize;
}