J'ai remplacé getch(0 par getche() dans la fonction gettoken() afin de voir
sur la fenêtre dos ce que j'écrivais.
La fonction gettoken() a été testé avec l'application dcl() de K&R page
122-123-124 et elle fonctionne normalement.
La fonction undcl(), elle ne fonctionne pas très bien en ce qu'il n'y a pas
moyen de la faire cesser avec la ligne:
while(gettoken() != EOF) dans main.
Voici un copie du programme donnée en exemple par KR chap 5.12
"Complicated declaration".
/*
undcl.c
"x is a function returning a pointer to an array of pointers to functions
returning char"
undcl convert word description to declaration
x () * [] * () char char (*(*x())[])()
void dcl(void);
void dirdcl(void);
int gettoken(void);
int tokentype; /* type of last token */
char token[MAXTOKEN]; /* last token string */
char name[MAXTOKEN]; /* identifyer name */
char datatype[MAXTOKEN]; /* data type = char, int, etc. */
char out[1000]; /* output string */
int gettoken(void){ /* return next token fonction commune a dcl() */
int c, getche(void);
void ungetch(int);
char *p = token;
-- Emmanuel The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html The C-library: http://www.dinkumware.com/refxc.html
"C is a sharp tool"
Jean Pierre Daviau
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND
SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND
SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Antoine Leca
En xdfZd.39922$, Jean Pierre Daviau va escriure:
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Ga ? Moi pas comprendre.
Or should it be, sorry: I do not get your point?
Eussiez-vous oublié de changer getch() par lirecar() et ungetch() par remettrecar()?
Ou alors n'eûtes-vous point de changement à faire, ce qui constituerait à coup sûr un motif pour votre initial problème...
Antoine
En xdfZd.39922$WM1.696983@wagner.videotron.net, Jean Pierre Daviau va
escriure:
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS
AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Error: Unresolved external '_remettrecar' referenced from
C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Ga ?
Moi pas comprendre.
Or should it be, sorry: I do not get your point?
Eussiez-vous oublié de changer getch() par lirecar() et ungetch() par
remettrecar()?
Ou alors n'eûtes-vous point de changement à faire, ce qui constituerait à
coup sûr un motif pour votre initial problème...
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Ga ? Moi pas comprendre.
Or should it be, sorry: I do not get your point?
Eussiez-vous oublié de changer getch() par lirecar() et ungetch() par remettrecar()?
Ou alors n'eûtes-vous point de changement à faire, ce qui constituerait à coup sûr un motif pour votre initial problème...
Antoine
Jean Pierre Daviau
lirecar() remettrecar() Ok. Emmanuel précédemment
me donne
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
comprenich?
ces deux fonctions ne sont pas dans Borland 5.5 and probably knot too dans devc++ Voilà le noeud de la question: while ((c=lirecar()) != EOF){ }
comment faire une boucle dont on sort en tapant return(OK) au clavier
lirecar()
remettrecar()
Ok.
Emmanuel
précédemment
me donne
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND
SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND
SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
comprenich?
ces deux fonctions ne sont pas dans Borland 5.5
and probably knot too dans devc++
Voilà le noeud de la question:
while ((c=lirecar()) != EOF){
}
comment faire une boucle dont on sort en tapant return(OK) au clavier
Error: Unresolved external '_lirecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ Error: Unresolved external '_remettrecar' referenced from C:DOCUMENTS AND SETTINGSJEAN PIERREBUREAUUNDCL.OBJ
comprenich?
ces deux fonctions ne sont pas dans Borland 5.5 and probably knot too dans devc++ Voilà le noeud de la question: while ((c=lirecar()) != EOF){ }
comment faire une boucle dont on sort en tapant return(OK) au clavier
Antoine Leca
En 6HjZd.53495$, Jean Pierre Daviau va escriure:
ces deux fonctions ne sont pas dans Borland 5.5
Non. Car elles sont données dans le livre. Au chapitre 4 ou quelque par là, comme tu l'as expliqué dans un de tes messages précédents.
Et bien sûr il faut les lier au programme principal, sinon on a l'erreur que tu cites.
Et si tu remplaces "getch" par "lirecar", à la fois dans le source de la fonction et aussi dans l'appel dans "gettoken", le résultat doit être le même.
Et si tu utilises un getche à la place de getch, et bien il faut en fournir le source aussi, sinon cela peut ne pas marcher.
Et enfin, si à la place de la focntion décrite par Biran tu laisses le compilateur utiliser sa version à lui (parce qu'il y a une duplication de nom imprévue), et que le comportement des deux n'est pas exactement le même dans des cas limites, eh bien tu as exactement le comportement que tu nous a raconté.
comment faire une boucle dont on sort en tapant return(OK) au clavier
En tapant TOUT ce que le bouquin te dis de taper, sans essayer de tirer au plus court.
Maintenant, il y a une autre solution, mais ne l'appliques pas aveuglement ;-)
#define EOF 13
devrait marcher dans ton cas...
Exercice: pourquoi?
Antoine
En 6HjZd.53495$WM1.824908@wagner.videotron.net, Jean Pierre Daviau va
escriure:
ces deux fonctions ne sont pas dans Borland 5.5
Non. Car elles sont données dans le livre. Au chapitre 4 ou quelque par là,
comme tu l'as expliqué dans un de tes messages précédents.
Et bien sûr il faut les lier au programme principal, sinon on a l'erreur que
tu cites.
Et si tu remplaces "getch" par "lirecar", à la fois dans le source de la
fonction et aussi dans l'appel dans "gettoken", le résultat doit être le
même.
Et si tu utilises un getche à la place de getch, et bien il faut en fournir
le source aussi, sinon cela peut ne pas marcher.
Et enfin, si à la place de la focntion décrite par Biran tu laisses le
compilateur utiliser sa version à lui (parce qu'il y a une duplication de
nom imprévue), et que le comportement des deux n'est pas exactement le même
dans des cas limites, eh bien tu as exactement le comportement que tu nous a
raconté.
comment faire une boucle dont on sort en tapant return(OK) au
clavier
En tapant TOUT ce que le bouquin te dis de taper, sans essayer de tirer au
plus court.
Maintenant, il y a une autre solution, mais ne l'appliques pas aveuglement
;-)
Non. Car elles sont données dans le livre. Au chapitre 4 ou quelque par là, comme tu l'as expliqué dans un de tes messages précédents.
Et bien sûr il faut les lier au programme principal, sinon on a l'erreur que tu cites.
Et si tu remplaces "getch" par "lirecar", à la fois dans le source de la fonction et aussi dans l'appel dans "gettoken", le résultat doit être le même.
Et si tu utilises un getche à la place de getch, et bien il faut en fournir le source aussi, sinon cela peut ne pas marcher.
Et enfin, si à la place de la focntion décrite par Biran tu laisses le compilateur utiliser sa version à lui (parce qu'il y a une duplication de nom imprévue), et que le comportement des deux n'est pas exactement le même dans des cas limites, eh bien tu as exactement le comportement que tu nous a raconté.
comment faire une boucle dont on sort en tapant return(OK) au clavier
En tapant TOUT ce que le bouquin te dis de taper, sans essayer de tirer au plus court.
Maintenant, il y a une autre solution, mais ne l'appliques pas aveuglement ;-)