voici la fonction WriteMot complète en remplacement de celle plus haut
(même complète, ça ne fonctionne pas) :
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;
for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
fpMot = malloc(sz) ;
for ( i = 0 ; i< nmax ; i++ )
strcat( fpMot, fpPhr[i] ) ;
for ( i = 0 ; i< nmax ; i++ )
printf("%c", fpMot) ;
voici la fonction WriteMot complète en remplacement de celle plus haut
(même complète, ça ne fonctionne pas) :
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;
for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
fpMot = malloc(sz) ;
for ( i = 0 ; i< nmax ; i++ )
strcat( fpMot, fpPhr[i] ) ;
for ( i = 0 ; i< nmax ; i++ )
printf("%c", fpMot) ;
voici la fonction WriteMot complète en remplacement de celle plus haut
(même complète, ça ne fonctionne pas) :
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;
for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
fpMot = malloc(sz) ;
for ( i = 0 ; i< nmax ; i++ )
strcat( fpMot, fpPhr[i] ) ;
for ( i = 0 ; i< nmax ; i++ )
printf("%c", fpMot) ;
Bonjour,
J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
résultat pour un exercice dont la solution de l'auteur ne fonctionne
pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex.
9.22.
Bonjour,
J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
résultat pour un exercice dont la solution de l'auteur ne fonctionne
pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex.
9.22.
Bonjour,
J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
résultat pour un exercice dont la solution de l'auteur ne fonctionne
pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex.
9.22.
On 30 juil, 01:31, ""
wrote:
> Bonjour,
> J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
> résultat pour un exercice dont la solution de l'auteur ne fonctionne
> pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
> parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex .
> 9.22.
Normal, tu n'affiches pas le tableau trié ...
Ceci fonctionne :
On 30 juil, 01:31, "bpascal...@googlemail.com"
<bpascal...@googlemail.com> wrote:
> Bonjour,
> J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
> résultat pour un exercice dont la solution de l'auteur ne fonctionne
> pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
> parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex .
> 9.22.
Normal, tu n'affiches pas le tableau trié ...
Ceci fonctionne :
On 30 juil, 01:31, ""
wrote:
> Bonjour,
> J'apprends le C à partir d'un tutorial en ligne. Je n'arrive pas à un
> résultat pour un exercice dont la solution de l'auteur ne fonctionne
> pas non plus. Vous pouvez voir sur l'exercice et la solution que je ne
> parviens pas à implémenter surhttp://www.ltam.lu/cours-c// ... ex .
> 9.22.
Normal, tu n'affiches pas le tableau trié ...
Ceci fonctionne :
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
Alex,
J'ai essayé de refaire l'exercice avec les éléments de ta réponse :
"Réfléchis bien au sujet de cette expression. A quoi s'applique +
1 ?..."
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
Réfléchis bien au sujet de cette expression. A quoi s'applique + 1 ?
En fait dans la série d'exercices, je reprends la solution de
l'auteur...
/* Lecture d'une phrase */
printf("Phrase %d : ",I);
gets(INTRO);
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
C'est peut-être parce que la solution de l'auteur fait appel à gets.
Je ne connais pas bien gets
mais d'après ce que je sais pour fgets,
fgets lit et renvoie 'n', ce qui fait que strlen renvoie le nombre de
lettre + le caractère invisible n.
Maintenant que tu pointes le doigt sur ça, je comprends que ce n'est
pas cohérent et que ça ajoute des espaces mémoires en plus qui
resteront vide.
En plus, je recherche plutôt à enlever l'espace
mémoire qui contient n pour que les mots apparaissent sur une même
ligne.
Alex,
J'ai essayé de refaire l'exercice avec les éléments de ta réponse :
"Réfléchis bien au sujet de cette expression. A quoi s'applique +
1 ?..."
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;
for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
Réfléchis bien au sujet de cette expression. A quoi s'applique + 1 ?
En fait dans la série d'exercices, je reprends la solution de
l'auteur...
/* Lecture d'une phrase */
printf("Phrase %d : ",I);
gets(INTRO);
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
C'est peut-être parce que la solution de l'auteur fait appel à gets.
Je ne connais pas bien gets
mais d'après ce que je sais pour fgets,
fgets lit et renvoie 'n', ce qui fait que strlen renvoie le nombre de
lettre + le caractère invisible n.
Maintenant que tu pointes le doigt sur ça, je comprends que ce n'est
pas cohérent et que ça ajoute des espaces mémoires en plus qui
resteront vide.
En plus, je recherche plutôt à enlever l'espace
mémoire qui contient n pour que les mots apparaissent sur une même
ligne.
Alex,
J'ai essayé de refaire l'exercice avec les éléments de ta réponse :
"Réfléchis bien au sujet de cette expression. A quoi s'applique +
1 ?..."
void WriteMot(char *fpPhr[], char *fpMot, int nmax)
{
int i ;
int sz = nmax ;for ( i = 0 ; i< nmax ; i++ )
sz += strlen( fpPhr[i] + 1 ) ;
Réfléchis bien au sujet de cette expression. A quoi s'applique + 1 ?
En fait dans la série d'exercices, je reprends la solution de
l'auteur...
/* Lecture d'une phrase */
printf("Phrase %d : ",I);
gets(INTRO);
TEXTE[I] = malloc(strlen(INTRO)+1);
C'est vrai que je ne comprends pas bien la présence de +1.
C'est peut-être parce que la solution de l'auteur fait appel à gets.
Je ne connais pas bien gets
mais d'après ce que je sais pour fgets,
fgets lit et renvoie 'n', ce qui fait que strlen renvoie le nombre de
lettre + le caractère invisible n.
Maintenant que tu pointes le doigt sur ça, je comprends que ce n'est
pas cohérent et que ça ajoute des espaces mémoires en plus qui
resteront vide.
En plus, je recherche plutôt à enlever l'espace
mémoire qui contient n pour que les mots apparaissent sur une même
ligne.
Pour conclure, je note qu'il est très révélateur de constater que l a
difficulté de l'exercice ne réside pas dans le fait de trier des cha înes
de caractères et de les concaténer (puisque tu en es globalement venu à
bout sans trop de casse, ce qui mérite une médaille à ton niveau), mais
bel et bien dans la mise en place d'une saisie utilisateur correcte (que
tu as bien foiré, ce qui n'est guère étonnant dans un langage aussi
antipathique envers l'idée de saisie utilisateur + tes références e n C).
--
Alex
Pour conclure, je note qu'il est très révélateur de constater que l a
difficulté de l'exercice ne réside pas dans le fait de trier des cha înes
de caractères et de les concaténer (puisque tu en es globalement venu à
bout sans trop de casse, ce qui mérite une médaille à ton niveau), mais
bel et bien dans la mise en place d'une saisie utilisateur correcte (que
tu as bien foiré, ce qui n'est guère étonnant dans un langage aussi
antipathique envers l'idée de saisie utilisateur + tes références e n C).
--
Alex
Pour conclure, je note qu'il est très révélateur de constater que l a
difficulté de l'exercice ne réside pas dans le fait de trier des cha înes
de caractères et de les concaténer (puisque tu en es globalement venu à
bout sans trop de casse, ce qui mérite une médaille à ton niveau), mais
bel et bien dans la mise en place d'une saisie utilisateur correcte (que
tu as bien foiré, ce qui n'est guère étonnant dans un langage aussi
antipathique envers l'idée de saisie utilisateur + tes références e n C).
--
Alex
Bonjour,
De cet exercice, je n'ai pas réussi la concaténation :(
La saisie utilisateur me pose quelques difficultés. J'ai bien pris
note de l'emploi de getchar(). Je vais reprendre le code et essayer de
m'habituer à la saisie utilisateur avec getchar(). Je me demandais
pourquoi le K&R fait plus mention de getchar() et putchar() que de
fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
sont des extra du langage c.
Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
encore quel niveau je dois approcher en C pour être ne pas avoir eu le
sentiment d'avoir perdu du temps.
J'espère que ces connaissances
pourront me servir à mieux comprendre les choses par la suite avec
d'autres langages.
Bonjour,
De cet exercice, je n'ai pas réussi la concaténation :(
La saisie utilisateur me pose quelques difficultés. J'ai bien pris
note de l'emploi de getchar(). Je vais reprendre le code et essayer de
m'habituer à la saisie utilisateur avec getchar(). Je me demandais
pourquoi le K&R fait plus mention de getchar() et putchar() que de
fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
sont des extra du langage c.
Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
encore quel niveau je dois approcher en C pour être ne pas avoir eu le
sentiment d'avoir perdu du temps.
J'espère que ces connaissances
pourront me servir à mieux comprendre les choses par la suite avec
d'autres langages.
Bonjour,
De cet exercice, je n'ai pas réussi la concaténation :(
La saisie utilisateur me pose quelques difficultés. J'ai bien pris
note de l'emploi de getchar(). Je vais reprendre le code et essayer de
m'habituer à la saisie utilisateur avec getchar(). Je me demandais
pourquoi le K&R fait plus mention de getchar() et putchar() que de
fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
sont des extra du langage c.
Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
encore quel niveau je dois approcher en C pour être ne pas avoir eu le
sentiment d'avoir perdu du temps.
J'espère que ces connaissances
pourront me servir à mieux comprendre les choses par la suite avec
d'autres langages.
On 08/04/2010 10:22 PM, wrote:
> Bonjour,
> De cet exercice, je n'ai pas réussi la concaténation :(
Ha bon ? Pourtant je suis parti de ton exemple est je ne me souviens pas
avoir eu à changer quoique ce soit dans la partie concaténation.
Ta sortie stdout, par contre, était un peu maladroite (et avec ces 'n'
qui traînaient, c'était pire). Ca a pu t'induire en erreur.
> La saisie utilisateur me pose quelques difficultés. J'ai bien pris
> note de l'emploi de getchar(). Je vais reprendre le code et essayer de
> m'habituer à la saisie utilisateur avec getchar(). Je me demandais
> pourquoi le K&R fait plus mention de getchar() et putchar() que de
> fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
> sont des extra du langage c.
Non, c'est plutôt C qui n'est pas extra pour faire de la saisie :(
La fonction que je t'ai donné (ReadUserString) n'est pas parfaite, mais
ça t'évitera des comportements bizarres si tu l'utilise plusieurs foi s
de suite.
> Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
> encore quel niveau je dois approcher en C pour être ne pas avoir eu l e
> sentiment d'avoir perdu du temps.
Si ton but est de faire du C++, tu perds un temps fou, parce-que la
saisie stdin en C++ sans bug thermonucléaire, ça donne quelque-chose du
genre :
string str;
cin >> str;
Ca donne envie hein ? Et encore, je te parle pas des concaténations de
chaînes...
> J'espère que ces connaissances
> pourront me servir à mieux comprendre les choses par la suite avec
> d'autres langages.
Certaines, peut-être...
--
Alex
On 08/04/2010 10:22 PM, bpascal...@googlemail.com wrote:
> Bonjour,
> De cet exercice, je n'ai pas réussi la concaténation :(
Ha bon ? Pourtant je suis parti de ton exemple est je ne me souviens pas
avoir eu à changer quoique ce soit dans la partie concaténation.
Ta sortie stdout, par contre, était un peu maladroite (et avec ces 'n'
qui traînaient, c'était pire). Ca a pu t'induire en erreur.
> La saisie utilisateur me pose quelques difficultés. J'ai bien pris
> note de l'emploi de getchar(). Je vais reprendre le code et essayer de
> m'habituer à la saisie utilisateur avec getchar(). Je me demandais
> pourquoi le K&R fait plus mention de getchar() et putchar() que de
> fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
> sont des extra du langage c.
Non, c'est plutôt C qui n'est pas extra pour faire de la saisie :(
La fonction que je t'ai donné (ReadUserString) n'est pas parfaite, mais
ça t'évitera des comportements bizarres si tu l'utilise plusieurs foi s
de suite.
> Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
> encore quel niveau je dois approcher en C pour être ne pas avoir eu l e
> sentiment d'avoir perdu du temps.
Si ton but est de faire du C++, tu perds un temps fou, parce-que la
saisie stdin en C++ sans bug thermonucléaire, ça donne quelque-chose du
genre :
string str;
cin >> str;
Ca donne envie hein ? Et encore, je te parle pas des concaténations de
chaînes...
> J'espère que ces connaissances
> pourront me servir à mieux comprendre les choses par la suite avec
> d'autres langages.
Certaines, peut-être...
--
Alex
On 08/04/2010 10:22 PM, wrote:
> Bonjour,
> De cet exercice, je n'ai pas réussi la concaténation :(
Ha bon ? Pourtant je suis parti de ton exemple est je ne me souviens pas
avoir eu à changer quoique ce soit dans la partie concaténation.
Ta sortie stdout, par contre, était un peu maladroite (et avec ces 'n'
qui traînaient, c'était pire). Ca a pu t'induire en erreur.
> La saisie utilisateur me pose quelques difficultés. J'ai bien pris
> note de l'emploi de getchar(). Je vais reprendre le code et essayer de
> m'habituer à la saisie utilisateur avec getchar(). Je me demandais
> pourquoi le K&R fait plus mention de getchar() et putchar() que de
> fgets, printf, scanf...? J'ai le sentiment que printf, scanf fgets
> sont des extra du langage c.
Non, c'est plutôt C qui n'est pas extra pour faire de la saisie :(
La fonction que je t'ai donné (ReadUserString) n'est pas parfaite, mais
ça t'évitera des comportements bizarres si tu l'utilise plusieurs foi s
de suite.
> Par ailleurs, je pense m'orienter d'ici peu vers c++. Je ne sais pas
> encore quel niveau je dois approcher en C pour être ne pas avoir eu l e
> sentiment d'avoir perdu du temps.
Si ton but est de faire du C++, tu perds un temps fou, parce-que la
saisie stdin en C++ sans bug thermonucléaire, ça donne quelque-chose du
genre :
string str;
cin >> str;
Ca donne envie hein ? Et encore, je te parle pas des concaténations de
chaînes...
> J'espère que ces connaissances
> pourront me servir à mieux comprendre les choses par la suite avec
> d'autres langages.
Certaines, peut-être...
--
Alex