Ecriture dans fichier C

green mamba Messages postés 8 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 18 janvier 2009 - 17 janv. 2009 à 12:02
green mamba Messages postés 8 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 18 janvier 2009 - 17 janv. 2009 à 21:11
Bonjour à tous!

voilà, j'ai refait un code de tri (je me suis légèrement inspiré d'un cs présent ici, je code plutôt mal en général), et je voudrais récuperer la liste générée par ce tri dans un .txt (doit trier plus de 10 000 adresses).

Je voudrais également supprimer les doublons dans cette liste dans un second temps, mais on y est pas encore!

donc voilà, j'ai " formatté " toute ma liste de la sorte à les mettre dans un tableau.

voilà le script à ce moment (affichage simple, pas de fichier!!!):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void tri_iteratif(char *tableau[], int taille)
     {
     char *temp;
     int i, j;

     for (i = 0; i < taille; i++)
     for (j = 0; j < taille; j++)
     if (strcmp(tableau[i], tableau[j]) < 0)
        {
        temp = tableau[i];
        tableau[i] = tableau[j];
        tableau[j] = temp;
        }
     }

void main(void)
     {
     char *valeurs[] = {"yoyoyo@msn.com", "yeyeye@hotmail.com", "yiyiyi@hotmail.be"]
     int i;
     tri_iteratif(valeurs, 10092);
     for (i = 0; i < 10092; i++)
         {printf("%s\n", valeurs[i]);}
         system("PAUSE");
}

voilà, donc si vous savez m'aider à sortir donc

yeyeye@hotmail.com
yiyiyi@hotmail.be
yoyoyo@msn.com

ca serais nikel (on a toujours pas vu les fichiers au cours et je ne dispose pas du cour en entier (pas jusqu'à là)

MERCIII :D

6 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 janv. 2009 à 13:31
salut

remplace :

for (i = 0; i < taille; i++)
     for (j = 0; j < taille; j++)

par

for (i = 0; i < taille - 1; i++)
     for (j = i+1; j < taille; j++)
0
green mamba Messages postés 8 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 18 janvier 2009
17 janv. 2009 à 18:10
merci, mais je ne vois pas bien ce que ceka change... J'ai le tri de Z a A et pas de A a Z... comprend pas ce que tu veux faire mais merci lol ^^
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 janv. 2009 à 18:40
ton tri ne trie pas, le mien si.
0
green mamba Messages postés 8 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 18 janvier 2009
17 janv. 2009 à 19:38
Je t'assure, ca marche, mais dans le sens inverse.

Peut tu plutot m'aider à enregistrer le resultat affiché dans un .txt??? (au lieun de l'afficher quoi)

ca serais top top top!!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 janv. 2009 à 19:56
Salut
Tu peux regarder les fonctions fopen et fwrite pour écrire facilement dans un fichier.

A+
____________________________________________________________________________
Mon site internet :  http://ImAnalyse.free.fr
http://ImAnalyse.free.fr
0
green mamba Messages postés 8 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 18 janvier 2009
17 janv. 2009 à 21:11
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include
#include

#define NOM_FIC "test.txt"

void tri_iteratif(char *tableau[], int taille)
     {
     char *temp;
     int i, j;

     for (i = 0; i < taille; i++)
     for (j = 0; j < taille; j++)
     if (strcmp(tableau[i], tableau[j]) < 0)
        {
        temp = tableau[i];
        tableau[i] = tableau[j];
        tableau[j] = temp;
        }
     }

void main(void)
     {
     
     FILE *hFile = NULL;
     int codeRetour = 0;
     hFile = fopen(NOM_FIC, "w");
     if (hFile == NULL)
    {
        perror("Erreur");
        (void)fprintf(stderr,"Impossible d'ouvrir %s en ecriture\n",NOM_FIC);
        exit(EXIT_FAILURE);
    }
    

     
     char *valeurs[] = {"efdefef@msn.com",    ....}; 
      int i;
     int len=10092;
     tri_iteratif(valeurs, len);
     for (i = 0; i < len; i++)
         {
         
         codeRetour = fputs("%s\n", valeurs[i], hFile); // problème à ce niveau, je ne peut pas enregistrer une chaine de caractere???
         if (codeRetour == EOF)
         {
                         perror("Erreur");
                        (void)fprintf(stderr,"Impossible d'ecrire dans %s\n",NOM_FIC);
                         exit(EXIT_FAILURE);
         }

         
         printf("%s\n", valeurs[i]);}
         
      codeRetour = fclose(hFile);
    if (codeRetour == EOF)
    {
        perror("Erreur");
        (void)fprintf(stderr,
            "Impossible de fermer correctement %s\n",
            NOM_FIC);
        exit(EXIT_FAILURE);
    }
 
    (void)printf("texte ecrit dans %s, sortie normale\n",
        NOM_FIC);
 
    return EXIT_SUCCESS;
    
    system("PAUSE");

}
0
Rejoignez-nous