Programmation C Lecture d'un fichier
Fermé
syrinero
Messages postés
2
Date d'inscription
jeudi 13 juin 2013
Statut
Membre
Dernière intervention
14 juin 2013
-
14 juin 2013 à 17:26
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 18 juin 2013 à 01:44
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 18 juin 2013 à 01:44
A voir également:
- Programmation C Lecture d'un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
2 réponses
roptat
Messages postés
276
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
26 juillet 2013
77
Modifié par roptat le 14/06/2013 à 17:49
Modifié par roptat le 14/06/2013 à 17:49
Ouhlala quelle horreur !
Ne déclare jamais de variable globale, c'est toujours horrible...
Tu te sers mal des pointeurs. Voici ce qui se passe :
Au début, mot pointe vers un endroit aléatoire de la mémoire, probablement NULL parce qu'il n'est pas initialisé. Puis lors de l'appel à read_mot, il est passé en paramètre et mots, une
Après le malloc, mots contient (par exemple) 0xFFA5B289 et mot contient NULL car mots est une copie, sans lien avec mot, sinon qu'elle a la même valeur au début lors de l'appel à la fonction.
Au retour de la fonction, tu compares mot, à NULL avec "NbDeDepots", ce que ton OS n'aime pas (déréférencement du pointeur NULL -> segfault).
Un pointeur est en fait une variable comme les autres qui contient un nombre, représentant une adresse en mémoire. Lorsque tu passe une variable en paramètre, la variable d'origine n'est pas modifiée.
Ne déclare jamais de variable globale, c'est toujours horrible...
Tu te sers mal des pointeurs. Voici ce qui se passe :
Au début, mot pointe vers un endroit aléatoire de la mémoire, probablement NULL parce qu'il n'est pas initialisé. Puis lors de l'appel à read_mot, il est passé en paramètre et mots, une
copiede mot contient NULL.
Après le malloc, mots contient (par exemple) 0xFFA5B289 et mot contient NULL car mots est une copie, sans lien avec mot, sinon qu'elle a la même valeur au début lors de l'appel à la fonction.
Au retour de la fonction, tu compares mot, à NULL avec "NbDeDepots", ce que ton OS n'aime pas (déréférencement du pointeur NULL -> segfault).
Un pointeur est en fait une variable comme les autres qui contient un nombre, représentant une adresse en mémoire. Lorsque tu passe une variable en paramètre, la variable d'origine n'est pas modifiée.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
18 juin 2013 à 01:44
18 juin 2013 à 01:44
Salut syrinero / syrine;
Dans ton message ci-dessus, on lit :
alors que dans ton message ici : https://forums.commentcamarche.net/forum/affich-28012006-besoin-d-aide-programmation-c on lit :
Y a-t-il des ; ou pas, les as-tu oubliés ?
Dal
Dans ton message ci-dessus, on lit :
NbDeDepots = 2 NbDeClients= 3
alors que dans ton message ici : https://forums.commentcamarche.net/forum/affich-28012006-besoin-d-aide-programmation-c on lit :
NbDeDepots = 2; NbDeClients= 3;
Y a-t-il des ; ou pas, les as-tu oubliés ?
Dal
14 juin 2013 à 17:56
CHAINE = (char*)malloc(30*sizeof(char));
et
mot = (char*)malloc(30*sizeof(char));
14 juin 2013 à 18:00