Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

remplir un tableau par un fichier

6 réponses
Avatar
programmation
Bonjour,

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

Voici mon essai:
Code :


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

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

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

tab[i] =3D strdup(s);

}

fclose(fp);
return 0;
}


J'ai probl=E8me: chaque case de tableau contient la chaine
correspondante mais de plus le caract=E8re '\n'.
Je voulais la chaine seulement sans '\n'.
Comment r=E9soudre ce probl=E8me ?

Merci.

6 réponses

Avatar
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 ...
Avatar
programmation
On 20 nov, 19:46, ByB wrote:
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 ?
Avatar
Bertrand Lenoir-Welter
> 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.
Avatar
ByB
programmation avait soumis l'idée :
On 20 nov, 19:46, ByB wrote:
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 ...
Avatar
ByB
> 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.
Avatar
nico
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.