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 :
- /* main.c */
- #include "main.h"
- int main(void)
- {
- FILE *file_excel;
- FILE *file_temp;
- printf("COPIE :\n" );
- /* ouverture des fichiers pour la copie avec transformation des virgules en points */
- if( ( ( file_excel = fopen("c:\\morphing.txt", "r" ) ) != NULL ) && ( ( file_temp = fopen("c:\\morphing_temp.txt", "w" ) ) != NULL ) )
- {
- printf("-> L'ouverture des fichiers s'est realisee correctement.\n" );
- if( transformation(file_excel,file_temp) == -1 )
- {
- printf(" !! Erreur dans les pointeurs de fichiers !!\n" );
- }
- else
- {
- printf("-> Copie du fichier reussie.\n" );
- }
- }
- else
- {
- printf(" !! Erreur lors d'une ouverture de fichier !!\n" );
- }
- /* fermeture des fichiers */
- if( ( fclose(file_excel) != EOF ) && ( fclose(file_temp) != EOF ) )
- {
- printf("-> La fermeture des fichiers s'est realisee correctement\n" );
- }
- else
- {
- printf(" !! Erreur lors d'une fermeture de fichier !!\n" );
- }
|
Et puis j'ai mon fichier lecture.c qui contient cette fonction transformation() :
Code :
- /* lecture.c */
- #include "lecture.h"
- int transformation(FILE *fpIn, FILE *fpOut)
- {
- int c;
- int ret = 0;
- if( ( fpIn != 0 ) && ( fpOut != 0 ) )
- {
- while ( (c = getc(fpIn)) != EOF)//copie du fichier vers un fichier temporaire
- {
- if( c == ',' ) //remplacement des virgules en points
- {
- c = '.';
- }
- putc(c, fpOut);
- }//fin de copie du fichier
- }
- else
- {
- ret = -1;
- }
- return ret;
- }
|
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 !!