Je dois coder un programme qui lit une liste de noms et d'identifiants d'étudiant et les trier en fonction du prénom, du nom et de l'identifiant. Mais il y a actuellement deux problèmes avec mon code.Lecture dans une liste
#include <stdio.h>
int main() {
char firstName[200][21], lastName[200][51];
unsigned short id[200]; // used short to decrease memory usage
int i;
for (i=0; i<200; ++i) {
printf("Enter first name of student %d: ",i+1);
getchar(); // FIX to consume enter
fgets(firstName[i],21,stdin);
printf("Enter last name of student %d: ",i+1);
fgets(firstName[i],21,stdin);
printf("Enter student number of student %d: ",i+1);
scanf("%hu",&id[i]);
printf("You've entered %s %s with ID %hu",firstName[i],lastName[i],id[i]);
}
// other functions to do after reading in the data is successfully done
}
- lecture des valeurs doit être arrêté si les élèves atteignent 200 ou si l'utilisateur entre EOF.
- Le prénom ou le nom de l'étudiant peut être composé de plusieurs parties (quelque chose comme "john john"), donc j'ai utilisé fgets au lieu de scanf et% s pour lire le mot qui vient après l'espace. .?. stocké
Pourriez-vous me dire comment arrêter la boucle avec EOF et lire dans le premier et le dernier nom correctement Merci
Avez-vous vérifié les valeurs renvoyées par votre [ 'getchar'] (http://en.cppreference.com/ w/c/io/getchar), ['fgets'] (http://en.cppreference.com/w/c/io/fgets) et [' scanf'] (http://en.cppreference.com/ w/c/io/fscanf) appels? –
Sur une note non liée, vous devriez probablement lire et en apprendre davantage sur * structures *. –