У меня есть программа, которую я использую (тихая, простая), которая требует ввода от пользователя с помощью scanf. Эти значения хранятся в массиве struct. В любом случае, я думаю, что у меня есть весь синтаксис правильно (если я не исправляю меня), но всякий раз, когда я хочу распечатать f, чтобы увидеть результаты, я не получаю значение из ID [i] .Middle_Name. Кажется, что это пусто, по причинам, которые я не понимаю. Я попытался добавить заявление печати, чтобы попытаться отладить его, но все равно ничего. Может, я что-то упустил?Проблемы с scanf()
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
struct Students{
char First_Name[20];
char Last_Name[20];
char Middle_Name[20];
int Age;
};
int main(void){
int n = 0; //number of students
int i = 0; //counter
printf("Please enter the total number of students in your class: ");
scanf("%d", &n);
struct Students ID[n];
printf("\n");
printf("******************** \n");
printf("After entering student info, they are displayed in full_name/middle_name/age order. \n");
printf("******************** \n");
for(i = 1; i <= n; i++){
printf("Please enter the first name of student with ID: %d \t", i);
scanf("%s", (ID[i].First_Name));
printf("\n");
printf("Please enter the last name of student with ID: %d \t", i);
scanf("%s", (ID[i].Last_Name));
printf("\n");
printf("Please enter the middle name of student ID: %d \t", i);
scanf("%s", (ID[i].Middle_Name));
printf("\n");
printf("Please enter the age of student ID: %d \t", i);
scanf("%d", &(ID[i].Age));
printf("\n");
}
printf("In your class, we have: \n");
printf("%s", ID[1].Middle_Name);
for(i = 1; i <= n; i++){
printf("%s \t", ID[i].First_Name);
printf("%s \t", ID[i].Last_Name);
printf("%s \t", ID[i].Middle_Name);
printf("%d \n", ID[i].Age);
}
return(0);
}
Каков ваш входной формат? – timrau
начальный индекс в C равен 0, а не 1, поэтому ваш for должен начинаться с i = 0 – user411313