Ouvrir un fichier à partir d'une variable

je_ne_viens_qu1_fois Messages postés 12 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 25 août 2006 - 25 août 2006 à 10:50
je_ne_viens_qu1_fois Messages postés 12 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 25 août 2006 - 25 août 2006 à 14:22
bonjour à tous

je code sur c++ et suis confronté à un problème qui doit vous sembler simple, mais que je n'arrive pas à résoudre.

j'ai un premier fichier, "donnees.txt", dans lequel je récupère un nom, disons "toto.txt".
j'utilise pour ce fgets:

#include dimension 50

FILE* file_donnees;
FILE* file_sortie;
char nom_sortie[dimension];

file_donnees=fopen("donnees.txt","r");
fgets(nom_sortie,dimension,file_donnees);

fopen(nom_sortie,"w");

mon dernier fopen ne marche pas; il passe à la compil, mais ne crée pas le fichier toto.txt, qui est pourtant la valeur de nom_sortie.
j'ai le même problème si j'utilise oftream à la place de mon second fopen.

je sais que le premier argument de fopen doit être une variable char*.
mais si je définis nom_sortie en char*, c'est mon fgets qui ne marche plus!!!

comment faire? 

4 réponses

je_ne_viens_qu1_fois Messages postés 12 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 25 août 2006
25 août 2006 à 11:11
il fallait lire pour ma dernière ligne de code:
file_sortie=fopen(nom_sortie,"w");
0
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
25 août 2006 à 11:23
Salut,
Ton code est bon, dans l'ensemble, juste quelques petits trucs à régler :
1-#include dimension 50 ?? ca compile ca ? je mettrais plutôt : #define dimension 50
2-Il faut préciser à fopen que tu ouvre tes fichiers en mode texte avec le paramètre "t", ce qui te donne : fopen(..., "rt")
3-Tu ne fermes pas tes fichiers, le problème est là, n'oublie pas fclose !, ton fichier nom_sortie n'est pas créé car tu ne le ferme pas, il faut mettre fclose après.

#define dimension 50

FILE* file_donnees;
FILE* file_sortie;
char nom_sortie[dimension];

file_donnees=fopen("donnees.txt","rt");
fgets(nom_sortie,dimension,file_donnees);
fclose(file_donnees);                                   //ligne ajoutée

file_sortie = fopen(nom_sortie,"wt");            //ligne modifiée
fclose(file_sortie);                                       //ligne ajoutée

ca devrais marcher.
ciao.

-{ Saifer }-
<hr size="2" width="100%" />http://sypher.fr.nf
0
Itsuki2 Messages postés 13 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 23 juin 2007
25 août 2006 à 11:25
Ton fichier contient-il des "\n" ??
0
je_ne_viens_qu1_fois Messages postés 12 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 25 août 2006
25 août 2006 à 14:22
Merci pour toutes ces réponses.
Mon programme tourne; je pense qu'il y avait plusieurs problèmes:

1) la variable "dimension" doit avoir la même taille+1 que le nom du fichier lu (ici, "toto.txt")
2) je devais fermer mes fichiers
3) je devais mettre "rt" à la place de "r", et "wt" à la place de "w"

merci pour tout
0
Rejoignez-nous