Stoqué un fichier dans une chaine C
Fermé
koukoukhaoula
Messages postés
50
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
29 juillet 2011
-
12 avril 2011 à 15:44
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 12 avril 2011 à 20:39
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 12 avril 2011 à 20:39
A voir également:
- Stoqué un fichier dans une chaine C
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
- Ouvrir un fichier .bin - Guide
4 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
12 avril 2011 à 15:48
12 avril 2011 à 15:48
et quelle est la question ?
koukoukhaoula
Messages postés
50
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
29 juillet 2011
12 avril 2011 à 15:49
12 avril 2011 à 15:49
j'ai problème lor de l'execution.je c pas comment se procédé
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
12 avril 2011 à 16:29
12 avril 2011 à 16:29
ok, déjà au début, lors de tes allocations mémoire il y a un problème :
char *res=(char *)malloc((strlen(res)+1)
le problème, c'est que res vient d'être crée, il a donc une longueur indéterminée, il ne faut pas appeler strlen dessus.
il te allouer la mémoire pour une chaine une fois que tu connais sa taille.
il y a plusieurs problèmes :
1) tu ne connais pas la taille de ton fichier au début. tu dois donc allouer assez de place pour mettre ce que tu lis (par tranche de 512 apparemment), puis utiliser ralloc pour réallouer de l'espace supplémentaire si tu n'as pas fini
2)es-tu sûr que dans ton fichier il n'y a pas de caractère nul ('\0') ?
car si oui tu seras incapable de lire la totalité de ton fichier dans ta chaine.
char *res=(char *)malloc((strlen(res)+1)
le problème, c'est que res vient d'être crée, il a donc une longueur indéterminée, il ne faut pas appeler strlen dessus.
il te allouer la mémoire pour une chaine une fois que tu connais sa taille.
il y a plusieurs problèmes :
1) tu ne connais pas la taille de ton fichier au début. tu dois donc allouer assez de place pour mettre ce que tu lis (par tranche de 512 apparemment), puis utiliser ralloc pour réallouer de l'espace supplémentaire si tu n'as pas fini
2)es-tu sûr que dans ton fichier il n'y a pas de caractère nul ('\0') ?
car si oui tu seras incapable de lire la totalité de ton fichier dans ta chaine.
koukoukhaoula
Messages postés
50
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
29 juillet 2011
12 avril 2011 à 17:45
12 avril 2011 à 17:45
c'est un fichier .js
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
12 avril 2011 à 20:39
12 avril 2011 à 20:39
c'est-à-dire ? un fichier avec du texte ou des lignes de code ? Dans ce cas c'est ok pour le deuxième problème.
mais il faut que tu corriges ton allocation de mémoire.
mais il faut que tu corriges ton allocation de mémoire.