remplir un tableau par un fichier

Le
programmation
Bonjour,

J'ai un fichier "in.txt" où chaque contient une chaine de caractère.
Un exemple de ce fichier:
Citation:
aa bbb
cc dddd
bb a
aa
Je voulais remplir un tableau par ce fichier c'est à dire chaque case
contient une chaine de ligne de fichier
autrement :
case 1 contient la chaine de 1 ère ligne de fichier
case 2 contient la chaine de 2 ème ligne de fichier

Le nombre des lignes de fichier est nbre c'est le même que le nombre
de case de tableau.

Voici mon essai:
Code :


int main()
{
FILE *fp;
int nbre,i,N=10;

//Le nombre des combinaisons
nbre = pow(2,N) - (N+1);

fp = fopen("in.txt","r");
//copier le contenu du fichier dans le tableau
for(i=0; i < nbre;i++)
{
fgets(s, 100, fpComb);

tab[i] = strdup(s);

}

fclose(fp);
return 0;
}


J'ai problème: chaque case de tableau contient la chaine
correspondante mais de plus le caractère ''.
Je voulais la chaine seulement sans ''.
Comment résoudre ce problème ?

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ByB
Le #20596701
programmation a couché sur son écran :
Bonjour,

J'ai un fichier "in.txt" où chaque contient une chaine de caractère.
Un exemple de ce fichier:
Citation:
aa bbb
cc dddd
bb a
aa
Je voulais remplir un tableau par ce fichier c'est à dire chaque case
contient une chaine de ligne de fichier
autrement :
case 1 contient la chaine de 1 ère ligne de fichier
case 2 contient la chaine de 2 ème ligne de fichier
...
Le nombre des lignes de fichier est nbre c'est le même que le nombre
de case de tableau.

Voici mon essai:
Code :


int main()
{
FILE *fp;
int nbre,i,N;

//Le nombre des combinaisons
nbre = pow(2,N) - (N+1);

fp = fopen("in.txt","r");
//copier le contenu du fichier dans le tableau
for(i=0; i < nbre;i++)
{
fgets(s, 100, fpComb);

tab[i] = strdup(s);

}

fclose(fp);
return 0;
}


J'ai problème: chaque case de tableau contient la chaine
correspondante mais de plus le caractère 'n'.
Je voulais la chaine seulement sans 'n'.
Comment résoudre ce problème ?

Merci.



Voir la petite correction de votre code (à tester toutefois, j'ai fait
ça sans compilateur)

//copier le contenu du fichier dans le tableau
for(i=0; i < nbre;i++)
{
fgets(s, 100, fpComb);
l = strlen(s);
s[l-1] = 0x00; // On remplace le n de la fin par un 0x00
tab[i] = strdup(s);

}

Vous devriez aussi vérifier que fp est valide après la ligne
fp = fopen("in.txt","r");
avant de l'utiliser ...
programmation
Le #20598221
On 20 nov, 19:46, ByB
programmation a couché sur son écran :



> Bonjour,

> J'ai un fichier "in.txt" où chaque contient une chaine de caractère .
> Un exemple de ce fichier:
> Citation:
> aa bbb
> cc dddd
> bb a
> aa
> Je voulais remplir un tableau par ce fichier c'est à dire chaque case
> contient une chaine de ligne de fichier
> autrement :
> case 1 contient la chaine de 1 ère ligne de fichier
> case 2 contient la chaine de 2 ème ligne de fichier
> ...
> Le nombre des lignes de fichier est nbre c'est le même que le nombre
> de case de tableau.

> Voici mon essai:
> Code :

> int main()
> {
> FILE *fp;
> int nbre,i,N;

> //Le nombre des combinaisons
> nbre = pow(2,N) - (N+1);

> fp = fopen("in.txt","r");
> //copier le contenu du fichier dans le tableau
>    for(i=0; i < nbre;i++)
>    {
>       fgets(s, 100, fpComb);

>      tab[i] = strdup(s);

>    }

> fclose(fp);
> return 0;
> }

> J'ai problème: chaque case de tableau contient la chaine
> correspondante mais de plus le caractère 'n'.
> Je voulais la chaine seulement sans 'n'.
> Comment résoudre ce problème ?

> Merci.

Voir la petite correction de votre code (à tester toutefois, j'ai fait
ça sans compilateur)

//copier le contenu du fichier dans le tableau
for(i=0; i < nbre;i++)
    {
       fgets(s, 100, fpComb);
       l = strlen(s);
       s[l-1] = 0x00;  // On remplace le   n de la fin par un 0x00
           tab[i] = strdup(s);

    }

Vous devriez aussi vérifier que fp est valide après la ligne
fp = fopen("in.txt","r");
avant de l'utiliser ...



C'est quoi 0x00 ?
Bertrand Lenoir-Welter
Le #20600431
> C'est quoi 0x00 ?



Là, ça calme. Je comprends mieux les autres questions, pour le coup.

Il vous a plusieurs fois été recommandé de faire l'acquisition du
Kernighan-Ritchie. Sans vouloir trop insister, vous devriez vraiment
l'envisager. Ca ne peut être que profitable. Il est évident qu'il vous
manque beaucoup de bases du langage C.
ByB
Le #20602801
programmation avait soumis l'idée :
On 20 nov, 19:46, ByB
programmation a couché sur son écran :



Bonjour,



J'ai un fichier "in.txt" où chaque contient une chaine de caractère.
Un exemple de ce fichier:
Citation:
aa bbb
cc dddd
bb a
aa
Je voulais remplir un tableau par ce fichier c'est à dire chaque case
contient une chaine de ligne de fichier
autrement :
case 1 contient la chaine de 1 ère ligne de fichier
case 2 contient la chaine de 2 ème ligne de fichier
...
Le nombre des lignes de fichier est nbre c'est le même que le nombre
de case de tableau.



Voici mon essai:
Code :



int main()
{
FILE *fp;
int nbre,i,N;



//Le nombre des combinaisons
nbre = pow(2,N) - (N+1);



fp = fopen("in.txt","r");
//copier le contenu du fichier dans le tableau
   for(i=0; i < nbre;i++)
   {
      fgets(s, 100, fpComb);



     tab[i] = strdup(s);



   }



fclose(fp);
return 0;
}



J'ai problème: chaque case de tableau contient la chaine
correspondante mais de plus le caractère 'n'.
Je voulais la chaine seulement sans 'n'.
Comment résoudre ce problème ?



Merci.



Voir la petite correction de votre code (à tester toutefois, j'ai fait
ça sans compilateur)

//copier le contenu du fichier dans le tableau
for(i=0; i < nbre;i++)
    {
       fgets(s, 100, fpComb);
       l = strlen(s);
       s[l-1] = 0x00;  // On remplace le   n de la fin par un 0x00
           tab[i] = strdup(s);

    }

Vous devriez aussi vérifier que fp est valide après la ligne
fp = fopen("in.txt","r");
avant de l'utiliser ...



C'est quoi 0x00 ?



Trouvez vous un bon livre de C, lisez le, et apprenez à vous servir de
Google, vous devriez progresser nettement plus vite qu'en débuggant
votre programme par l'intermédiaire des news ...
ByB
Le #20602791
> Trouvez vous un bon livre de C, lisez le, et apprenez à vous servir de
Google, vous devriez progresser nettement plus vite qu'en débuggant votre
programme par l'intermédiaire des news ...



Voilà de quoi vous occuper pour les jours qui viennent :

http://www-roc.inria.fr/secret/Anne.Canteaut/COURS_C/cours.pdf
ftp://ftp.imag.fr/pub/labo-CLIPS/commun/C/Introduction_ANSI_C.pdf

etc.
nico
Le #20602781
ByB wrote:
Trouvez vous un bon livre de C, lisez le, et apprenez à vous servir de
Google, vous devriez progresser nettement plus vite qu'en débuggant
votre programme par l'intermédiaire des news ...



Voilà de quoi vous occuper pour les jours qui viennent :

http://www-roc.inria.fr/secret/Anne.Canteaut/COURS_C/cours.pdf
ftp://ftp.imag.fr/pub/labo-CLIPS/commun/C/Introduction_ANSI_C.pdf

etc.



Oui, et le K&R est facilement trouvable en ebook.
Publicité
Poster une réponse
Anonyme