Fgets 跳过第一个字符

问题描述 投票:0回答:0

当我将用户名作为输入并使用该信息执行其他任务时,输出不包含第一个学生姓名的第一个字符。

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,但它仍然无法正常工作

c scanf fgets getchar
© www.soinside.com 2019 - 2024. All rights reserved.