renomer/remover un fichier

renomer/remover un fichier - C - Programmation

Marsh Posté le 21-06-2005 à 18:39:01    

je fais des traitements sur un fichier comme suit :

Code :
  1. in  = fopen(argv[1], "rb" );    //argv[1]=name-file ----> fichier source
  2. out = fopen(strcat(argv[1],".NEW" ), "wb" ); //name-file.NEW ---> fichier resultat
  3. //traitement ....
  4. fclose(in);   
  5. fclose(out);   
  6. remove(argv[1]);                        // supprimer le fichier source
  7. //renommer le fichier traiter pour avoir le nom du fi chier source  
  8. rename(strcat(argv[1],"NEW" ),argv[1]);
  9. ...


ça marche bien...mais la supprssion et le renommage ça marche pas ?
je veux faire des traitement sur un fichier en utilisant un fichier temporaire et à la fin je veux supprimer le fichier source pour qu'il prend sa place le fichier traiter ......
resultat du programme :

Code :
  1. name-file        // fichier source
  2. name-file.NEW    // fichier temporaire traiter


merci
 

Reply

Marsh Posté le 21-06-2005 à 18:39:01   

Reply

Marsh Posté le 21-06-2005 à 19:43:38    

demo2000 a écrit :

je fais des traitements sur un fichier comme suit :


in  = fopen(argv[1], "rb" );    //argv[1]=name-file ----> fichier source
out = fopen(strcat(argv[1],".NEW" ), "wb" );




Marche pas.  
 
argv[] est certes modifiable, mais pas extensible. Le comportement est indéfini.
 
D'autre part, en admettant que argv[] soit exensible, tu l'as modifié avec  

strcat(argv[1],".NEW" )


Donc

remove(argv[1]);


efface le .NEW, ce qui n'est probablement ce que tu veux. Il faut créer des chaines distinctes et de tailles suffisantes. malloc() est ton ami...


Message édité par Emmanuel Delahaye le 21-06-2005 à 19:46:37

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed