0

次のコードは、ユーザーに学生の数と課題の数を入力するように求め、次に各学生の名前を入力するように求めます。

何らかの理由で学生の名前を尋ねるループに到達すると、プロンプトが 1 行に 2 回出力されます。

Student name: Student name:

なぜこれが起こるのか誰か教えてください。そして、それを修正する方法は?

この問題に何度か遭遇しましたが、シナリオは異なります。

#include <stdio.h>
#include <cstring>

void print_array(char str[20][20], int number) {
    int i;
    for (i=0; i < number; i++) {
        printf("%s\n", str[i]);
    }
    printf("---\n");
}

void main() {
    int students, assignments;
    char names[20][20];

    do {
        printf("How many students are there (between 1 and 20)?");
        scanf("%d", &students);
        if (students < 1 || students > 20)
            printf ("Number of students must be between 1 and 20.\n");
    } while (students < 1 || students > 20);

    do {
        printf("How many assignments are there (between 1 and 10)?");
        scanf("%d", &assignments);
        if (assignments < 1 || assignments > 10)
            printf ("Number of assignments must be between 1 and 10.\n");
    } while (assignments < 1 || assignments > 10);

    int i;
    for(i=0; i < students; i++){
        printf("Student name:");
        fgets(names[i], 20, stdin);
    }

    print_array(names, students);
}
4

1 に答える 1