Enregistrements
Fermé
akramdib
Messages postés
6
Date d'inscription
mercredi 23 janvier 2019
Statut
Membre
Dernière intervention
28 juin 2019
-
Modifié le 28 juin 2019 à 13:31
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 1 juil. 2019 à 15:53
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 1 juil. 2019 à 15:53
A voir également:
- Enregistrements
- Autres enregistrements de ce titre - Guide
- Publipostage plusieurs enregistrements sur la même page ✓ - Forum Word
- Mes enregistrements freebox ont disparus - Forum Logiciels
- Je ne peux plus lire mes enregistrements sur ma freebox - Forum Freebox
- Ftp //hd1.freebox.fr/disque dur/enregistrements/ - Forum Réseaux sociaux
1 réponse
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié le 1 juil. 2019 à 15:56
Modifié le 1 juil. 2019 à 15:56
Bonjour akramdib,
Il y a plusieurs problèmes dans ton code. La cause première de l'erreur est que tu ne déclares pas une variable "etudiant", mais juste un type "etudiant", avec l'instruction
Pour déclarer un étudiant en utilisant ce type, il faudrait écrire, par exemple :
Il y a des confusions au niveau des valeurs passées en arguments de tes
Par contre, lorsque tu veux traiter une chaîne de caractères, l'identifiant de la chaîne déclarée pointe déjà vers l'adresse mémoire du début de l'espace réservé à la chaîne. Donc si tu as un tableau de 100
Ce qui m'amène à la dernière série de problèmes. Un
est un type qui permet de stocker :
- un tableau de 100 notes avec le membre "note"
- une chaîne de 99 caractères avec le membre "nom"
- une chaîne de 99 caractères avec le membre "prenom"
Si tu veux un tableau de 100 étudiants, avec chacun 1 note, 1 nom et 1 prénom, cela ne sert à rien de réserver un espace pour un tableau de 100 notes de cet étudiant... sauf si tu veux stocker 100 notes pour chacun des 100 étudiants...
Pour faire un tableau de 100 étudiants, tu déclarerais :
et tu accèdes aux champs concernant la note du premier étudiant en faisant
Dal
Il y a plusieurs problèmes dans ton code. La cause première de l'erreur est que tu ne déclares pas une variable "etudiant", mais juste un type "etudiant", avec l'instruction
typedef, ce type étant un alias du type
struct etudiantque tu as définit et donc, tu n'as pas de mémoire allouée permettant un stockage que quoi que ce soit, juste la création de types.
Pour déclarer un étudiant en utilisant ce type, il faudrait écrire, par exemple :
etudiant etud1;et à ce moment là, tu réserves de la mémoire pour stocker des choses dans les membres de la
structavec la variable
etud1.
Il y a des confusions au niveau des valeurs passées en arguments de tes
scanf(), qui attend des pointeurs. Si
nest un
intalors tu dois passer un pointeur sur
n, donc
scanf("%d", &n);et pas
scanf("%d", n);...
Par contre, lorsque tu veux traiter une chaîne de caractères, l'identifiant de la chaîne déclarée pointe déjà vers l'adresse mémoire du début de l'espace réservé à la chaîne. Donc si tu as un tableau de 100
chardéclaré comme
char nom[100];, qui est un espace mémoire pouvant accueillir une chaîne de 99 caractères au maximum (plus de
'\0'qui termine la chaîne), il suffit de faire
scanf("%s", nom);et tu n'as pas besoin de précéder le nom de
&...
Ce qui m'amène à la dernière série de problèmes. Un
typedefsur une
structcomme :
typedef struct etudiant { int note[100]; char nom[100]; char prenom[100]; } etudiant;
est un type qui permet de stocker :
- un tableau de 100 notes avec le membre "note"
- une chaîne de 99 caractères avec le membre "nom"
- une chaîne de 99 caractères avec le membre "prenom"
Si tu veux un tableau de 100 étudiants, avec chacun 1 note, 1 nom et 1 prénom, cela ne sert à rien de réserver un espace pour un tableau de 100 notes de cet étudiant... sauf si tu veux stocker 100 notes pour chacun des 100 étudiants...
Pour faire un tableau de 100 étudiants, tu déclarerais :
etudiant etudiants[100];
et tu accèdes aux champs concernant la note du premier étudiant en faisant
etudiants[0].note, à l'adresse réservée pour son nom en faisant
etudiants[0].nometc.
Dal