Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

remplir un tableau par un fichier

1 view
Skip to first unread message

programmation

unread,
Nov 20, 2009, 2:54:36 AM11/20/09
to
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 '\n'.
Je voulais la chaine seulement sans '\n'.
Comment résoudre ce problème ?

Merci.

programmation

unread,
Nov 20, 2009, 2:59:30 AM11/20/09
to

ByB

unread,
Nov 20, 2009, 1:46:08 PM11/20/09
to
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=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 '\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

unread,
Nov 20, 2009, 6:07:29 PM11/20/09
to
On 20 nov, 19:46, ByB <nom...@nomail.com> 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=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 '\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

unread,
Nov 21, 2009, 7:38:09 AM11/21/09
to
> 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

unread,
Nov 21, 2009, 1:49:09 PM11/21/09
to
programmation avait soumis l'idᅵe :

> On 20 nov, 19:46, ByB <nom...@nomail.com> 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=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 '\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

unread,
Nov 21, 2009, 1:55:03 PM11/21/09
to
> 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

unread,
Nov 21, 2009, 2:11:51 PM11/21/09
to

Oui, et le K&R est facilement trouvable en ebook.

0 new messages