Aller au contenu

lecture/ecriture dans un fichier en C


Messages recommandés

Salut,

j'aimerais ecrire un programme qui trie un fichier de mots suivant une fonction de comparaison donne en argument et qui copie le resultat dans un autre fichier.

IL faut utiliser un tas pour ecrire cette fonction avec le prototype suivant

int triflots (FILE *flotLecture, FILE *flotEcriture, int (*cmp)(const char *s1,const char *s2))

Si quelqu'un sait comment faire?.

merci d'avance

PS:les fonctions de comparaison sont déjà ecrites ainsi que les fonctions de manipulation du tas

Lien vers le commentaire
Partager sur d’autres sites

Salut,je mets ce que j'ai fait

Voici les protypes des fonctions de manipulation du tas

/*Toutes ces fonctions retournent 0 ssi pas d'erreur,

un code d'erreur sinon*/

/*Création d'un tas .Le paramètre cmp permet de préciser

la relation d'ordre sur ces éléments.*/

extern int newHeap(Heap **h, int (*cmp)(void *,void *));

/*Ajouter l'élément désigné par newElt au tas désigné par h.

Fait une copie à usage interne de l'élément.*/

extern int addToHeap(Heap *h, void *newElt);

/*Retirer le plus petit élément du tas ,le recopier dans la zone

désignée par res ,qu'on suppose suffisament grande.*/

extern int removeSmallestFromHeap(Heap *h, void *res);

/*Libérer les ressources occupées par le tas. au retour de la fonction,

*h vaut NULL.*/

extern int freeHeap(Heap **h);

Voici la fonction ou je demande de l'aide

int triFlots(FILE *flotLecture, FILE *flotEcriture, int (*cmp)(const char *s1, const char *s2))
{
char nom[];
char*ligne;
Heap h;

   if((flotEcriture=fopen(nom,"w"))==NULL)
     {
       fprintf(stderr,"Erreur à l'ouverture\n");
       return -1;
     }
   if((flotLecture=fopen(nom,"r"))==NULL)
     {
       fprintf(stderr,"Erreur à l'ouverture\n");
       return -2;
     }
       while(!feof(flotLecture))
        {
           newHeap(&h, cmp(ligne,ligne+1));
           addToHeap(h,ligne);
           removeSmallestFromHeap(h,ligne);
        }
fclose(flotLecture);
fclose(flotEcriture);
return 0;
}

Lien vers le commentaire
Partager sur d’autres sites

pour lire un fichier octet par octet

et si le fichier en entree contient les mots, les uns à la suite des autres

exemple

le fichier c:\test.txt contient

ceci est un test

#include <stdio.h>

int main ()
{
   FILE *file_in;
   char nom[20] = "c:\\test.txt";
   int octet_lu;
   int separ = 32;
   
   if ((file_in = fopen (nom, "r")) == NULL)
   {
       printf("Erreur\n");
       return -1;
   }
   
   while (!feof(file_in))
   {
       octet_lu=fgetc (file_in);
       if (octet_lu == separ)
           printf ("nouveau mot\n");
       else
       if (octet_lu == -1)
           printf ("fin de fichier\n");
       else
           printf ("lu %d\n", octet_lu);
   }
   
   fclose (file_in);
}  

ensuite il te faut reconstruire les mots à l'aide des lettres

puis de faire le tri une fois les mots stockés dans une liste

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...