Ouvrir un fichier à partir d'une variable

Signaler
Messages postés
12
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
25 août 2006
-
Messages postés
12
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
25 août 2006
-
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

Messages postés
12
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
25 août 2006

il fallait lire pour ma dernière ligne de code:
file_sortie=fopen(nom_sortie,"w");
Messages postés
115
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2008
1
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
Messages postés
13
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
23 juin 2007

Ton fichier contient-il des "\n" ??
Messages postés
12
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
25 août 2006

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