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

  1. 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
    1. 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