Nouvelle de mon prog en c

celine -  
 zanlou -
ca y est g enfin reussi a voir le bout du tunnel g reussit a ouvrir lire un fichier et transferer ses elements dans un autres fichier seulement quand je veux etendre mon prog a deux fichiers ouverts et transferer leurs elements dans un meme et un seul fichier je n ai comme resultat que les elements du second fichier.je pense qu il faut introduire une notion de pointeur Pouvez vous me donner des indications SVP.Gros merci.voici mon prog
#include <stdio.h>
//#include <io.h>
//#include <dos.h>
//#include <sys\type.h>

// fonction ouverture des fichiers entree et sortie//
FILE *fopen(const char *entree,const char *r);
FILE *fopen(const char *entree2,const char *r);
FILE *fopen(const char *sortie,const char *w);

//fonction qui positionne le pointeur de fichier a la fin du fichier out//
//long lseek(int cle, long decalage, int SEEK_END);

//fonction creation de fichier avec chemin imposer//
//int creattemp(const char *chemin, int FA_READONLY);

//fonction effacement du fichier temp//
//int remove(const char *sortie);

//void GetTime(struct time *Heure_Actuelle);
//void GetDate(struct date *Date_Actuelle);

void main(void)
{

//chemin d'entree,nb:le c peut ouvrir jusqu'a 20 fichiers //
const char *entree= "c:\\projet~1\\essailocal\\pbx001\\subscrib.log";//c:\\projet~1\\essailocal\\pbx002\\subscrib.log,c:\\projet~1\\essailocal\\pbx002\\grp.log,c:\\projet~1\\essailocal\\pbx003\\subscrib.log, c:\\projet~1\\essailocal\\pbx003\\grp.log, c:\\projet~1\\essailocal\\pbx001\\subscrib.log, c:\\projet~1\\essailocal\\pbx004\\grp.log, c:\\projet~1\\essailocal\\pbx004\\grp.log";
const char*entree2="c:\\projet~1\\essailocal\\pbx001\\grp.log";
const char *sortie="c:\\TEMP\\stat.text";
int lettre,lettre2;
FILE *fichierin,*fichierout;

//chemin du fichier temporaire//
//char chemin[15]="c:\\TEMP\\";

//declaration pour reglage routine
//struct time *Heure_Actuelle;
//struct date *Date_Actuelle;
//GetTime(&*Heure_Actuelle);
//GetDate(&*Date_Actuelle);

//condition pour que prog se mettent en route,si condition realisee alors formatage du fichier temp//
//if ((Date_Actuelle.da_day="01")
//{
//effacement du fichier temp//
//while (*++sortie)

//if (Remove(*sortie))

//printf("Erreur ‡ la suppression du fichier");

//verification creation du fichier temporaire//
// if ((cle=creattemp (*chemin,0)) == -1)
// {
// printf("non cree");
// if (Heure_Actuelle="23:59:59:99")
// {

//verification ouverture correct des fichiers//
if ((fichierin=fopen(entree,"r"))== NULL)

printf("non ouvert1");

else if ((fichierin=fopen(entree2,"r"))== NULL)

printf("non ouvert2");

else if ((fichierout=fopen(sortie,"w"))== NULL)

printf("non ouvert3");

else

//lecture et ecriture de chaque caractere dans fichier correspondant//
while ((lettre=fgetc(fichierin)) != EOF)

fputc(lettre,fichierout);
fclose(fichierin);

while ((lettre2=fgetc(fichierin)) != EOF)

//lseek(cle,0,SEEK_END); //fin du fichier de sortie
fputc(lettre2,fichierout);
fclose(fichierin);
fclose(fichierout);

// }
//}
}

1 réponse

Zanlou
 
LE probleme vien du fait que le programme ne peut pas faire la difference entre les deux fichiers en entree.

Tu lui dit d'ouvrir la premier et tu fait pointer ta variable dessus.

Puis, tu ouvre le deuxieme fichier et tu fait pointer la meme variable dessus.

Il faut que tu definisse un pointeur sur chacun des fichiers oui que tu ouvre le deuxieme fichier apres avoir ferme le premier, a toi de voir.

A+

Zanlou
Tu as donc perdu la possibilté d'accéder au premiere fichier.

Ta boucle

while ((lettre=fgetc(fichierin)) != EOF)

fputc(lettre,fichierout);

ecrti donc dans le deuxieme fichier.

puis

fclose(fichierin);

ferme ce fichier

et bien sur

while ((lettre2=fgetc(fichierin)) != EOF)

//lseek(cle,0,SEEK_END); //fin du fichier de sortie
fputc(lettre2,fichierout);

ne fonctionne pas car tu essaie de lire un fichier que tu viens de fermer a l'instant.

0
zanlou
 
Je vous mets le meme message mais dans l'ordre. Je sais pas ce qui s'est passé mais 3 lignes sont monteés au mileu du texte, rendant le truc moins facile a comprendre.

Voici donc le message tel qu'il aurait du etre :)

--------------------------

LE probleme vien du fait que le programme ne peut pas faire la difference entre les deux fichiers en entree.

Tu lui dit d'ouvrir la premier et tu fait pointer ta variable dessus.

Puis, tu ouvre le deuxieme fichier et tu fait pointer la meme variable dessus.

Tu as donc perdu la possibilté d'accéder au premiere fichier.

Ta boucle

while ((lettre=fgetc(fichierin)) != EOF)

fputc(lettre,fichierout);


ecrti donc dans le deuxieme fichier.

puis

fclose(fichierin);

ferme ce fichier

et bien sur

while ((lettre2=fgetc(fichierin)) != EOF)

//lseek(cle,0,SEEK_END); //fin du fichier de sortie
fputc(lettre2,fichierout);

ne fonctionne pas car tu essaie de lire un fichier que tu viens de fermer a l'instant.

Il faut que tu definisse un pointeur sur chacun des fichiers oui que tu ouvre le deuxieme fichier apres avoir ferme le premier, a toi de voir.

A+

Zanlou


0