Le code ci-dessous n'affiche ni message d'erreur ni resultat. J'ai
repris le code du tutoriel des posts r=E9cents pr=E9c=E9dents d'un exercice
que je trouve int=E9ressant d'un point de vue algorithmes.
Dans les posts pr=E9c=E9dents, il =E9tait sujet d'une confusion dans la
saisie clavier et =E9tourderies et dans ce post, je n'exclue pas
l'=E9tourderie mais j'ai juste chang=E9 l'arithm=E9tique tableaux par
l'arithm=E9tique pointeurs. Sur ce mod=E8le, l'arithm=E9tique tableaux
fonctionne tr=E8s bien.
/*
Ecrire un programme qui remplace toutes les occurrences d'une cha=EEne
de caract=E8res CH1 par la cha=EEne CH2 dans une cha=EEne de caract=E8res S=
UJ.
Utiliser une cha=EEne de sauvegarde FIN pendant le remplacement.
*/
/* Saisies... je dois inclure un fgets !=3D NULL pr s=E9curiser
fgets.... je ne me concentre pas =E0 cet instant sur le blindage du
code, juste que ce soit =E9tanche... */
Comme d'hab: que se passe t'il si la chaine saisie est vide (c-a-d qu'elle contient ' ' dès le début). Mais bon c pas le fond du problème. Si tu veux un conseil: laisse tomber les i/o quand tu veux tester un algo. Mets des chaines constantes dans le code et ton prog ce sera plus simple et tu pourra te concentrer sur les erreurs de ton algo.
*pSuj = ' ' ;
/* Boucles de traitement de caracteres AVEC POINTEURS */
for ( pSuj = Suj, pCh1 = Ch1 ; *Suj ; pSuj++ )
^^^^
Suj n'a pas l'air de changer beaucoup dans la boucle. Tu n'aurais pas fait une faute en confondant *Suj avec *pSuj?
Conseil de noel: Laisse tomber le test et les conclusion "pas d'erreur" mais "ne fait rien". Ca ne veut rien dire. Essaye un débuggeur pas à pas si tu veux comprendre ce qu'il se passe.
Cadeau de noel: Utilise un IDE "moderne" (exemple http://www.eclipse.org/cdt/). Avec un tel ide tu as un débuggeur qui permet de faire tourner ton prog pas à pas. C'est comme cela que tu comprendra le pb dans ton algo et que tu progressera.
Allez fais toi plaisir pour noel. Telecharge ceci: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip
Dezippe le et lance le. Crée un projet C et ecris-y ton code. Enfin lance le débuggeur pour voir "tourner" ton prog. Tu va vite comprendre les erreurs.
Comme d'hab: que se passe t'il si la chaine saisie est vide (c-a-d
qu'elle contient ' ' dès le début). Mais bon c pas le fond du problème.
Si tu veux un conseil: laisse tomber les i/o quand tu veux tester un
algo. Mets des chaines constantes dans le code et ton prog ce sera plus
simple et tu pourra te concentrer sur les erreurs de ton algo.
*pSuj = ' ' ;
/* Boucles de traitement de caracteres AVEC POINTEURS */
for ( pSuj = Suj, pCh1 = Ch1 ; *Suj ; pSuj++ )
^^^^
Suj n'a pas l'air de changer beaucoup dans la boucle. Tu n'aurais pas
fait une faute en confondant *Suj avec *pSuj?
Conseil de noel: Laisse tomber le test et les conclusion "pas d'erreur"
mais "ne fait rien". Ca ne veut rien dire. Essaye un débuggeur pas à pas
si tu veux comprendre ce qu'il se passe.
Cadeau de noel: Utilise un IDE "moderne" (exemple
http://www.eclipse.org/cdt/). Avec un tel ide tu as un débuggeur qui
permet de faire tourner ton prog pas à pas. C'est comme cela que tu
comprendra le pb dans ton algo et que tu progressera.
Allez fais toi plaisir pour noel. Telecharge ceci:
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip
Dezippe le et lance le. Crée un projet C et ecris-y ton code. Enfin
lance le débuggeur pour voir "tourner" ton prog. Tu va vite comprendre
les erreurs.
Comme d'hab: que se passe t'il si la chaine saisie est vide (c-a-d qu'elle contient ' ' dès le début). Mais bon c pas le fond du problème. Si tu veux un conseil: laisse tomber les i/o quand tu veux tester un algo. Mets des chaines constantes dans le code et ton prog ce sera plus simple et tu pourra te concentrer sur les erreurs de ton algo.
*pSuj = ' ' ;
/* Boucles de traitement de caracteres AVEC POINTEURS */
for ( pSuj = Suj, pCh1 = Ch1 ; *Suj ; pSuj++ )
^^^^
Suj n'a pas l'air de changer beaucoup dans la boucle. Tu n'aurais pas fait une faute en confondant *Suj avec *pSuj?
Conseil de noel: Laisse tomber le test et les conclusion "pas d'erreur" mais "ne fait rien". Ca ne veut rien dire. Essaye un débuggeur pas à pas si tu veux comprendre ce qu'il se passe.
Cadeau de noel: Utilise un IDE "moderne" (exemple http://www.eclipse.org/cdt/). Avec un tel ide tu as un débuggeur qui permet de faire tourner ton prog pas à pas. C'est comme cela que tu comprendra le pb dans ton algo et que tu progressera.
Allez fais toi plaisir pour noel. Telecharge ceci: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip
Dezippe le et lance le. Crée un projet C et ecris-y ton code. Enfin lance le débuggeur pour voir "tourner" ton prog. Tu va vite comprendre les erreurs.
sam.
-ed-
On 24 déc, 13:12, "" wrote:
Le code ci-dessous n'affiche ni message d'erreur ni resultat. J'ai
J'ai quand même ça ...
-------------- Build: Debug in hello ---------------
Compiling: main.c Linking console executable: binDebughello.exe C:devhellomain.c: In function `main': C:devhellomain.c:59: warning: will never be executed Output size is 19.39 KB Process terminated with status 0 (0 minutes, 4 seconds) 0 errors, 1 warnings
Ensuite, j'ai testé l'exécution, clairement, on est coincé dans une boucle. Il y a donc un bug dans le programme (algo, codage...)
Ta méthode de suppression du 'n' n'est pas bonne dans tous les cas. Elle te fonctionne que dans les cas simples (saisie 'normale' sans dépassement). On t'a déjà expliqué 3000 fois comment faire. Pourquo i cet entêtement ? On est pas enclin à t'aider si tu ne tiens pas compte des réponses apportées...
for (pSuj = Suj, pCh1 = Ch1; *Suj; pSuj++)
*Suj est un invariant. C'est probablement un bug (boucle infinie). Tu veux dire
for (pSuj = Suj, pCh1 = Ch1; *pSuj; pSuj++)
?
On 24 déc, 13:12, "bpascal...@googlemail.com"
<bpascal...@googlemail.com> wrote:
Le code ci-dessous n'affiche ni message d'erreur ni resultat. J'ai
J'ai quand même ça ...
-------------- Build: Debug in hello ---------------
Compiling: main.c
Linking console executable: binDebughello.exe
C:devhellomain.c: In function `main':
C:devhellomain.c:59: warning: will never be executed
Output size is 19.39 KB
Process terminated with status 0 (0 minutes, 4 seconds)
0 errors, 1 warnings
Ensuite, j'ai testé l'exécution, clairement, on est coincé dans une
boucle. Il y a donc un bug dans le programme (algo, codage...)
Ta méthode de suppression du 'n' n'est pas bonne dans tous les cas.
Elle te fonctionne que dans les cas simples (saisie 'normale' sans
dépassement). On t'a déjà expliqué 3000 fois comment faire. Pourquo i
cet entêtement ? On est pas enclin à t'aider si tu ne tiens pas compte
des réponses apportées...
for (pSuj = Suj, pCh1 = Ch1; *Suj; pSuj++)
*Suj est un invariant. C'est probablement un bug (boucle infinie). Tu
veux dire
Le code ci-dessous n'affiche ni message d'erreur ni resultat. J'ai
J'ai quand même ça ...
-------------- Build: Debug in hello ---------------
Compiling: main.c Linking console executable: binDebughello.exe C:devhellomain.c: In function `main': C:devhellomain.c:59: warning: will never be executed Output size is 19.39 KB Process terminated with status 0 (0 minutes, 4 seconds) 0 errors, 1 warnings
Ensuite, j'ai testé l'exécution, clairement, on est coincé dans une boucle. Il y a donc un bug dans le programme (algo, codage...)
Ta méthode de suppression du 'n' n'est pas bonne dans tous les cas. Elle te fonctionne que dans les cas simples (saisie 'normale' sans dépassement). On t'a déjà expliqué 3000 fois comment faire. Pourquo i cet entêtement ? On est pas enclin à t'aider si tu ne tiens pas compte des réponses apportées...
for (pSuj = Suj, pCh1 = Ch1; *Suj; pSuj++)
*Suj est un invariant. C'est probablement un bug (boucle infinie). Tu veux dire
Ma réponse ne permet pas de poursuivre le débat, c'est juste que j'ai commencé à refaire ce code selon vos directives et conseils, mais j'ai également voulu insérer une fonction pour une saisie avec fgets sans 'n' le code me semble cohérent, cependant la fonction de saisie d'un tableau de caractère, c-à-d une fonction char ne me semble pas évidente en tant que débutant à implémenter.
Et puis j'ai mis de côté tout ce qui concerne la saisie de characteres, ça commençait à faire trop...donc je suis passé momentanément à des exercices classique avec "int"... Et puis avec la fatigue de l'hiver, je me suis pas fait vraiment violence tout comme la plupart sur fr comp group c ou avez-vous migré sur comp group c anglais? à suivre...
On 1 jan, 19:51, "bpascal...@googlemail.com"
<bpascal...@googlemail.com> wrote:
merci
Ma réponse ne permet pas de poursuivre le débat, c'est juste que j'ai
commencé à refaire ce code selon vos directives et conseils, mais j'ai
également voulu insérer une fonction pour une saisie avec fgets sans
'n' le code me semble cohérent, cependant la fonction de saisie d'un
tableau de caractère, c-à-d une fonction char ne me semble pas
évidente en tant que débutant à implémenter.
Et puis j'ai mis de côté tout ce qui concerne la saisie de
characteres, ça commençait à faire trop...donc je suis passé
momentanément à des exercices classique avec "int"... Et puis avec la
fatigue de l'hiver, je me suis pas fait vraiment violence tout comme
la plupart sur fr comp group c ou avez-vous migré sur comp group c
anglais? à suivre...
Ma réponse ne permet pas de poursuivre le débat, c'est juste que j'ai commencé à refaire ce code selon vos directives et conseils, mais j'ai également voulu insérer une fonction pour une saisie avec fgets sans 'n' le code me semble cohérent, cependant la fonction de saisie d'un tableau de caractère, c-à-d une fonction char ne me semble pas évidente en tant que débutant à implémenter.
Et puis j'ai mis de côté tout ce qui concerne la saisie de characteres, ça commençait à faire trop...donc je suis passé momentanément à des exercices classique avec "int"... Et puis avec la fatigue de l'hiver, je me suis pas fait vraiment violence tout comme la plupart sur fr comp group c ou avez-vous migré sur comp group c anglais? à suivre...