次のコードは、ユーザーに学生の数と課題の数を入力するように求め、次に各学生の名前を入力するように求めます。
何らかの理由で学生の名前を尋ねるループに到達すると、プロンプトが 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);
}