Langage C
Fermé
lamou23
Messages postés
178
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
21 mars 2011
-
30 mai 2010 à 21:14
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 - 31 mai 2010 à 09:11
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 - 31 mai 2010 à 09:11
A voir également:
- Langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Dev-Pascal - Télécharger - Édition & Programmation
2 réponses
didji31320
Messages postés
23
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
27 mars 2011
7
30 mai 2010 à 21:21
30 mai 2010 à 21:21
Bonjour,
Je vois plusieurs problèmes dans ton code :
-tu ne lis pas ton fichier : voir
si tu ne lis pas le fichier et ne met pas la lecture dans une variable (ici maVar) tu ne peut pas travailler dessus,
-les fonction de chaines de caractere (strcat,strcmp, ...) ne sont uniquement pour les chaines statiques il me semble.
-dans tes saisies (s1 s2 ...) tu n'alloue pas de memoire pour stocker la saisie dynamique: voir
en esperant t'avoir un minimum aidé.
Je vois plusieurs problèmes dans ton code :
-tu ne lis pas ton fichier : voir
fread(&maVar,sizeof(TypeMaVar),1,fpt);
si tu ne lis pas le fichier et ne met pas la lecture dans une variable (ici maVar) tu ne peut pas travailler dessus,
-les fonction de chaines de caractere (strcat,strcmp, ...) ne sont uniquement pour les chaines statiques il me semble.
-dans tes saisies (s1 s2 ...) tu n'alloue pas de memoire pour stocker la saisie dynamique: voir
s1=(char*)malloc(sizeof(char));
en esperant t'avoir un minimum aidé.
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
31 mai 2010 à 09:11
31 mai 2010 à 09:11
if (strcmp(s1,a)==0) {}
==> maladroit, tu peux écrire :
if (!strcmp(s1,a)) {}
char* s1="";
==> plantage assuré, car tu initialises le pointeur s1 par l'adresse d'une chaîne vide (un seul octet nul). A l'utilisation, ce que tu va mettre dedans va écraser d'autres chose, d'où éffets de bords plus ou moins catastrophiques.
==> maladroit, tu peux écrire :
if (!strcmp(s1,a)) {}
char* s1="";
==> plantage assuré, car tu initialises le pointeur s1 par l'adresse d'une chaîne vide (un seul octet nul). A l'utilisation, ce que tu va mettre dedans va écraser d'autres chose, d'où éffets de bords plus ou moins catastrophiques.