Ecriture dans fichier C

Signaler
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009
-
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
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++)
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009

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 ^^
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
ton tri ne trie pas, le mien si.
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009

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!!!!!
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009

#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");

}