Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2427 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] copier un fichier de données formatées via une fonction externe...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] copier un fichier de données formatées via une fonction externe...

n°373368
freeman_78
Posté le 27-04-2003 à 18:41:22  profilanswer
 

Bonjour !
 
Alors voilà, le but est simple : copier un fichier texte (et remplacer les virgules qu'il contient par des points).
A priori c'est très simple, j'arrive à le faire quand tout est dans le même fichier mais j'ai voulu séparer les étapes et donc j'ai créé plusieurs fichiers.
 
J'ai donc mon fichier main.c qui contient (entre autres) :

Code :
  1. /* main.c */
  2. #include "main.h"
  3. int main(void)
  4. {
  5. FILE *file_excel;
  6. FILE *file_temp;
  7. printf("COPIE :\n" );
  8. /* ouverture des fichiers pour la copie avec transformation des virgules en points */
  9. if( ( ( file_excel = fopen("c:\\morphing.txt", "r" ) ) != NULL ) && ( ( file_temp = fopen("c:\\morphing_temp.txt", "w" ) ) != NULL ) )
  10. {
  11.  printf("-> L'ouverture des fichiers s'est realisee correctement.\n" );
  12.  if( transformation(file_excel,file_temp) == -1 )
  13.  {
  14.   printf(" !! Erreur dans les pointeurs de fichiers !!\n" );
  15.  }
  16.  else
  17.  {
  18.   printf("-> Copie du fichier reussie.\n" );
  19.  }
  20. }
  21. else
  22. {
  23.  printf(" !! Erreur lors d'une ouverture de fichier !!\n" );
  24. }
  25. /* fermeture des fichiers */
  26. if( ( fclose(file_excel) != EOF ) && ( fclose(file_temp) != EOF ) )
  27. {
  28.  printf("-> La fermeture des fichiers s'est realisee correctement\n" );
  29. }
  30. else
  31. {
  32.  printf(" !! Erreur lors d'une fermeture de fichier !!\n" );
  33. }


 
Et puis j'ai mon fichier lecture.c qui contient cette fonction transformation() :

Code :
  1. /* lecture.c */
  2. #include "lecture.h"
  3. int transformation(FILE *fpIn, FILE *fpOut)
  4. {
  5. int c;
  6. int ret = 0;
  7. if( ( fpIn != 0 ) && ( fpOut != 0 ) )
  8. {
  9.  while ( (c = getc(fpIn)) != EOF)//copie du fichier vers un fichier temporaire
  10.  {
  11.   if( c == ',' ) //remplacement des virgules en points
  12.   {
  13.    c = '.';
  14.   }
  15.   putc(c, fpOut);
  16.  }//fin de copie du fichier
  17. }
  18. else
  19. {
  20.  ret = -1;
  21. }
  22. return ret;
  23. }


 
Le problème c'est que là mon fichier destination (morphing_temp.txt) est vide après l'exécution du programme !
 
Apparemment ça vient du fopen puisque quand je fais l'ouverture des fichiers au sein de la fonction transformation(), tout marche bien.
 
Alors est-ce qu'il y aurait moyen d'adapter pour que ce que j'ai copiécollé fonctionne ? ou alors suis-je obligé de faire les ouvertures et fermetures de fichiers dans la fonction qui traite le fichier ? (dans ce cas il n'y a pas d'argument et ell n'est donc ps utilisable, ce que je voudrais éviter si possible).
 
 
Merci d'avance !!

mood
Publicité
Posté le 27-04-2003 à 18:41:22  profilanswer
 

n°373748
KSauzeRK
Posté le 28-04-2003 à 09:14:46  profilanswer
 

En regardant le code vite fait, je vois pas pourquoi ca ne fonctionne pas. En tous cas, le fait que tu fasses tes fopen() en dehors de la fonction ne devrait pas changer quoique ce soit.  
 
Bon, je sais ca t'aide pas trop...à part de faire un up.
 

n°373820
skeye
Posté le 28-04-2003 à 09:49:25  profilanswer
 

freeman_78 a écrit :

Bonjour !
 
Alors voilà, le but est simple : copier un fichier texte (et remplacer les virgules qu'il contient par des points).
A priori c'est très simple, j'arrive à le faire quand tout est dans le même fichier mais j'ai voulu séparer les étapes et donc j'ai créé plusieurs fichiers.
 
J'ai donc mon fichier main.c qui contient (entre autres) :

Code :
  1. plein de trucs


 
Le problème c'est que là mon fichier destination (morphing_temp.txt) est vide après l'exécution du programme !
 
Apparemment ça vient du fopen puisque quand je fais l'ouverture des fichiers au sein de la fonction transformation(), tout marche bien.


Ca serait étonnant que ca vienne du fopen, tes messages d'erreur te préviendraient...
 

Citation :


Alors est-ce qu'il y aurait moyen d'adapter pour que ce que j'ai copiécollé fonctionne ? ou alors suis-je obligé de faire les ouvertures et fermetures de fichiers dans la fonction qui traite le fichier ? (dans ce cas il n'y a pas d'argument et ell n'est donc ps utilisable, ce que je voudrais éviter si possible).


 
Si tu veux absolument des paramètres, il suffit passer les noms des fichiers à ouvrir...c'est tout à fait utilisable, et d'ailleurs je trouve plus lisible de faire les ouvertures et fermetures de fichiers dans la fonction ou je lis/écris ces fichiers.
 
Je ne connais pas le retour de getc(), mais vérifie que ta technique de détection de fin de fichier est valable, tu ne rentres p-e jamais dans ton while ( (c = getc(fpIn)) != EOF).


Message édité par skeye le 28-04-2003 à 09:50:05

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] copier un fichier de données formatées via une fonction externe...

 

Sujets relatifs
un fichier .3ds peut-il contenir des coordonnées de texture ?Source de données non trouvée et nom de pilote non spécifié
dans un fichier .ase, par quoi sont désigné les coordonnée de texture?[C] Lire un fichier texte
Mauvais affichage du fichierLecture dans un fichier : ligne par ligne
[PHP/JS] Grande chaine de car dans une fonction js.[C] probleme avec fonction system()
Comment récupérer des données d'un mail ??[vb(a)] je veux faire fonction qui separe une chaine de char en deux
Plus de sujets relatifs à : [C] copier un fichier de données formatées via une fonction externe...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR