Fichier texte a partir de tableau (C)
Résolu/Fermé
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
-
18 févr. 2008 à 16:59
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 19 févr. 2008 à 13:01
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 19 févr. 2008 à 13:01
A voir également:
- Fichier texte a partir de tableau (C)
- Fichier rar - Guide
- Tableau croisé dynamique - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Tableau ascii - Guide
4 réponses
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
120
18 févr. 2008 à 18:41
18 févr. 2008 à 18:41
Ce sprintf() ne peut que planter :
sprintf((char *) &filename,"create.txt");
écris plutôt : strcat( filename , "create.txt" );
Tu peux ouvrir ton fichier 1 seule fois avant la boucle for(), et le refermer 1 seule fois après cette même boucle
En C, les indices de tableau commencent à 0 et non à 1 (remarque)
Slts !
sprintf((char *) &filename,"create.txt");
écris plutôt : strcat( filename , "create.txt" );
Tu peux ouvrir ton fichier 1 seule fois avant la boucle for(), et le refermer 1 seule fois après cette même boucle
En C, les indices de tableau commencent à 0 et non à 1 (remarque)
Slts !
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
18 févr. 2008 à 18:52
18 févr. 2008 à 18:52
Bonjour,
En fait strcat plantera aussi dans ce cas à moins de mettre un '\0' en premier caractère dans filename, mais de toute façon ce n'est pas une concaténation que tu veux faire.
Le point fautif est le '&' dans ton sprintf, et c'est probablement pour cela que tu as du caster en (char *) car ton compilo se retrouve avec un char ** pour un paramètre de type char *.
Voilou.
Oui sinon, idem, ouvrir le fichier une seule fois en mode écriture (w), tout écrire, fermer.
et ++ aussi, un tableau de taille 2 (par exemple) possède deux éléments, a[0] et a[1];
M.
En fait strcat plantera aussi dans ce cas à moins de mettre un '\0' en premier caractère dans filename, mais de toute façon ce n'est pas une concaténation que tu veux faire.
Le point fautif est le '&' dans ton sprintf, et c'est probablement pour cela que tu as du caster en (char *) car ton compilo se retrouve avec un char ** pour un paramètre de type char *.
Voilou.
Oui sinon, idem, ouvrir le fichier une seule fois en mode écriture (w), tout écrire, fermer.
et ++ aussi, un tableau de taille 2 (par exemple) possède deux éléments, a[0] et a[1];
M.
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
120
18 févr. 2008 à 18:54
18 févr. 2008 à 18:54
meaculpa, il faut utiliser strcpy() et non strcat(), bien évidement !
sprintf() n'a aucun intérêt pour copier une chaîne.
sprintf() n'a aucun intérêt pour copier une chaîne.
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
19 févr. 2008 à 13:01
19 févr. 2008 à 13:01
Merci pour votre aide j'ai corrigé les erreurs signalées et quelques autres erreurs d'inattention (i++ a lieu de tmp++ dans le for :$) et ca marche.
Bonne continuation.
MICH
Bonne continuation.
MICH