当我将用户名作为输入并使用该信息执行其他任务时,输出不包含第一个学生姓名的第一个字符。
int main(){
// Task1 - Enter student number
int i, number;
printf("Enter the number of students: ");
scanf("%d", &number);
getchar();
while(number > 1000) {
printf("Your number is too high. Maximum number of student is 1000. Please enter again: ");
scanf("%d", &number);
}
//Task2 - get student info
struct studentInfo students[number];
for (i = 0; i < number; i++) {
printf("\nEnter data for student %d:\n", i+1);
printf("Enter student %d name: ", i+1);
getchar(); // consume the newline character left in the input stream
fgets(students[i].fullName, sizeof(students[i].fullName), stdin); //use fgets instead of scanf
students[i].fullName[strcspn(students[i].fullName, "\n")] = 0; // Remove trailing newline
printf("Enter student %d ID: ", i+1);
scanf("%s", students[i].ID);
printf("Enter student %d birthdate: ", i+1);
scanf("%s", students[i].birthDate);
我已将 fgets 更改为 gets 并添加 getchar,但它仍然无法正常工作