Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1579 connectés 

  FORUM HardWare.fr
  Programmation
  C

  copier le contenue d'un fichier dans un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

copier le contenue d'un fichier dans un tableau

n°2212892
elhem_elh
Posté le 08-12-2013 à 00:12:42  profilanswer
 

bonjour
s'il vous plait je suis entrain de coder un programme qui tend à lire le contenue d'un fichier et le copier dans un tableau mais je suis bloquée
dans cette partie de code  
//remplissage du tableau
         FILE *fichier=NULL;
        char chaine[100];
        int dimension,int i;
        char *tab[100];
         fichier = fopen("easyin.txt", "r" );
           i=0;
           do
           {
       if  (fgets(chaine, 100, fichier) != NULL)  
        {  
                           
            strcpy(*(tab+i),chaine);
            i++;
        }  
        }
        while(i>(dimension-1));
 
 
merci d'avance

mood
Publicité
Posté le 08-12-2013 à 00:12:42  profilanswer
 

n°2212901
Terminapor
I'll see you rise.
Posté le 08-12-2013 à 10:38:22  profilanswer
 

Déjà, Dimension n'est pas initialisé, donc ta boucle risque de prendre un certain temps.
 
Ensuite, ton tab est un pointeur sur tableau de char, et n'est pas initialisé non plus.
Dans ta copie, tu décale que d'une case dans tab, donc tu écrasera les anciennes lettres..
 
Il faut commencer par allouer ton tab, comme tu ne connais pas la taille du fichier, fais juste un pointeur que tu ré-allouera.  
 

Code :
  1. //remplissage du tableau
  2. FILE *fichier=NULL;
  3. char chaine[100];
  4. int i = 0;
  5. char *tab = NULL;
  6. int taille = 0;
  7. fichier = fopen("easyin.txt", "r" );
  8. while (true)
  9. {
  10. if  (fgets(chaine, 100, fichier) != NULL) 
  11.                 // On calcule la nouvelle taille (ancienne taille + taille de la chaine à ajouter)
  12.  int Len = strlen(chaine);
  13.  taille += Len;
  14.  // Allocation si tab est NULL, sinon ré-allocation
  15.  if (tab == NULL)
  16.   tab = (char*)malloc( taille );
  17.  else
  18.   tab = (char*)realloc( tab, taille );
  19.                 // Le décalage sera toujours de 100 caractères,puisque c'est uniquement à la fin du fichier que tu pourras avoir taille de chaine < 100.
  20.  strcpy( tab + i*100 ,chaine);
  21.  i++;
  22. }
  23. else
  24.  break;
  25. }


---------------
Perhaps you don't deserve to breathe
n°2212902
elhem_elh
Posté le 08-12-2013 à 12:09:56  profilanswer
 

merci :) j'ai corrigé mon code mais après le remplissage de tableau de caractére  le code se bloque voici le code corrigé  
 
 const char *stock;
        char **tab;
        tab= (char**)malloc(dimension*sizeof(char*));
        int dimension;
        int i,l,k,n,x,a,j,p;
        char chaine[1000];
            //remplissage du tableau
         fichier = fopen("easyin.txt", "r" );
           i=0;
           
       if (fichier == NULL)
    {
        printf("Impossible to open the file\n" );
        exit(42);
    }  
                          while (dimension >= 0){
                          stock= fgets(chaine, 1000, fichier);
                          tab[i] = (char*)malloc((strlen(stock)+1)*sizeof(char));
                          strcpy(tab[i],stock);
                          --dimension;
                          printf("%s",tab[i]);
                         i++;
            }
              fclose(fichier);
     
             


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  copier le contenue d'un fichier dans un tableau

 

Sujets relatifs
[HTML/JS] Créer et télécharger un fichier CSV avec ierecherche un moyen d'integrer du css a un fichier js
ecrire dans un fichier excel[C]Détection de fin de fichier...
Copier une partie d'une liste doublement chaînéeBalise html pour fichier .g3w
extraire des valeurs pour remplir tableauCopie de fichiers video selon lignes tableau Excel
parcourir tableau via une urlafficher le contenue d'un tableau dans une interface graphique
Plus de sujets relatifs à : copier le contenue d'un fichier dans un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR