Voici ma question. Comme je me dit que le code devrait marcher tel quel, je
me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Voici ma question. Comme je me dit que le code devrait marcher tel quel, je
me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Voici ma question. Comme je me dit que le code devrait marcher tel quel, je
me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes.
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes.
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes.
Vous pouvez également le simuler avec:
printf "ma chaine ascii" | ./monprogramme
Vous pouvez également le simuler avec:
printf "ma chaine ascii" | ./monprogramme
Vous pouvez également le simuler avec:
printf "ma chaine ascii" | ./monprogramme
J'avais l'impression que le seul moyen pour moi était de
fermer mon terminal, auquel cas difficile de voir le résultat
s'afficher. :-)
J'avais l'impression que le seul moyen pour moi était de
fermer mon terminal, auquel cas difficile de voir le résultat
s'afficher. :-)
J'avais l'impression que le seul moyen pour moi était de
fermer mon terminal, auquel cas difficile de voir le résultat
s'afficher. :-)
Bonjour à tous,
J'ai un léger souci avec ce code très simple du K&R2.
#include <stdio.h>
main()
Il doit compter les caractères que je tape avec mon clavier et afficher
le résultat. Or, tant qu'il y a des éventuels caractères à lire en
entrée, le résultat ne s'affiche pas, même après avoir tapé ENTER, ce
qui est normal.
Si je mets "10" à la place "EOF", quand je tape ENTER, là le résultat
s'affiche, c'est bien normal aussi.
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes. Si je n'ai aucun moyen envoyer en
entrée un "EOF", je ne vois pas comment ce petit code peut fonctionner
tel quel.
Bonjour à tous,
J'ai un léger souci avec ce code très simple du K&R2.
#include <stdio.h>
main()
Il doit compter les caractères que je tape avec mon clavier et afficher
le résultat. Or, tant qu'il y a des éventuels caractères à lire en
entrée, le résultat ne s'affiche pas, même après avoir tapé ENTER, ce
qui est normal.
Si je mets "10" à la place "EOF", quand je tape ENTER, là le résultat
s'affiche, c'est bien normal aussi.
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes. Si je n'ai aucun moyen envoyer en
entrée un "EOF", je ne vois pas comment ce petit code peut fonctionner
tel quel.
Bonjour à tous,
J'ai un léger souci avec ce code très simple du K&R2.
#include <stdio.h>
main()
Il doit compter les caractères que je tape avec mon clavier et afficher
le résultat. Or, tant qu'il y a des éventuels caractères à lire en
entrée, le résultat ne s'affiche pas, même après avoir tapé ENTER, ce
qui est normal.
Si je mets "10" à la place "EOF", quand je tape ENTER, là le résultat
s'affiche, c'est bien normal aussi.
Voici ma question. Comme je me dit que le code devrait marcher tel quel,
je me demandais s'il n'y avait pas une touche du clavier qui serait
interprétée en entré comme "EOF" ?
Il me semble que globalement une touche du clavier correspond à un
caractère, mais peut-être pas toutes. Si je n'ai aucun moyen envoyer en
entrée un "EOF", je ne vois pas comment ce petit code peut fonctionner
tel quel.
#include <stdio.h>
main()
NON,
dans la préface du K&R2 on lit :
"This Second Edition of The C Programming Language describes C as
defined by the ANSI standard. Although we have noted the places where
the language has evolved, we have chosen to write exclusively in the
new form."
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
même si je sais bien que ce n'est pas une obligation.
#include <stdio.h>
main()
NON,
dans la préface du K&R2 on lit :
"This Second Edition of The C Programming Language describes C as
defined by the ANSI standard. Although we have noted the places where
the language has evolved, we have chosen to write exclusively in the
new form."
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
même si je sais bien que ce n'est pas une obligation.
#include <stdio.h>
main()
NON,
dans la préface du K&R2 on lit :
"This Second Edition of The C Programming Language describes C as
defined by the ANSI standard. Although we have noted the places where
the language has evolved, we have chosen to write exclusively in the
new form."
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
même si je sais bien que ce n'est pas une obligation.
En news:47d93098$0$2858$, candide va escriure:#include <stdio.h>
main()
NON,
« Non » quoi ?
Bien. Donc tu as trouvé une faute mineure (qui n'a pas d'influence sur le
résultat, mais est effectivement discordante avec certains prémisses) dans
un livre publié il y a 17 ans.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un problème
pour François ?
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
Là, je ne vois pas le rapport. S'il y a un problème dans le code ci-dessus,
c'est parce qu'il enfreint les recommandations de 3.9.5, mais pas 2.1.2.2
qui est vérifiée.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
En news:47d93098$0$2858$426a74cc@news.free.fr, candide va escriure:
#include <stdio.h>
main()
NON,
« Non » quoi ?
Bien. Donc tu as trouvé une faute mineure (qui n'a pas d'influence sur le
résultat, mais est effectivement discordante avec certains prémisses) dans
un livre publié il y a 17 ans.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un problème
pour François ?
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
Là, je ne vois pas le rapport. S'il y a un problème dans le code ci-dessus,
c'est parce qu'il enfreint les recommandations de 3.9.5, mais pas 2.1.2.2
qui est vérifiée.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
En news:47d93098$0$2858$, candide va escriure:#include <stdio.h>
main()
NON,
« Non » quoi ?
Bien. Donc tu as trouvé une faute mineure (qui n'a pas d'influence sur le
résultat, mais est effectivement discordante avec certains prémisses) dans
un livre publié il y a 17 ans.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un problème
pour François ?
et pourtant la norme ANSI indique :
"2.1.2.2 (...) It can be
defined with no parameters:
int main(void) { /*...*/ }
or (...)"
Là, je ne vois pas le rapport. S'il y a un problème dans le code ci-dessus,
c'est parce qu'il enfreint les recommandations de 3.9.5, mais pas 2.1.2.2
qui est vérifiée.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
En news:47d93098$0$2858$, candide va escriure:#include <stdio.h>
main()
NON,
« Non » quoi ?
Réponse : on ne devrait pas écrire ainsi.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un
problème pour François ?
parce que la pratique correcte depuis C99 est de déclarer
Ça prouve en plus qu'il n'a pas configuré son compilateur comme il se
doit, c'est pourtant une des premières choses à faire quand on
commence à programmer en C
et pourtant la norme ANSI indique :
"2.1.2.2 (...)
Là, je ne vois pas le rapport. S'il y a un problème dans le code
ci-dessus, c'est parce qu'il enfreint les recommandations de 3.9.5,
mais pas 2.1.2.2 qui est vérifiée.
Ça a quand même un rapport me semble-t-il (la forme de définition est
donnée)
et, par ailleurs, j'avais cherché mais en vain une référence à
l'obsolescence qui figure comme tu le rappelles en 3.9.5.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
Écrire int main(void) au lieu de main() n'était pas une obligation.
Moi je lis dans Harbison :
"Prior to C99, the return type of main was often omitted, defaulting
to int. This is no longer allowed."
En news:47d93098$0$2858$426a74cc@news.free.fr, candide va escriure:
#include <stdio.h>
main()
NON,
« Non » quoi ?
Réponse : on ne devrait pas écrire ainsi.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un
problème pour François ?
parce que la pratique correcte depuis C99 est de déclarer
Ça prouve en plus qu'il n'a pas configuré son compilateur comme il se
doit, c'est pourtant une des premières choses à faire quand on
commence à programmer en C
et pourtant la norme ANSI indique :
"2.1.2.2 (...)
Là, je ne vois pas le rapport. S'il y a un problème dans le code
ci-dessus, c'est parce qu'il enfreint les recommandations de 3.9.5,
mais pas 2.1.2.2 qui est vérifiée.
Ça a quand même un rapport me semble-t-il (la forme de définition est
donnée)
et, par ailleurs, j'avais cherché mais en vain une référence à
l'obsolescence qui figure comme tu le rappelles en 3.9.5.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
Écrire int main(void) au lieu de main() n'était pas une obligation.
Moi je lis dans Harbison :
"Prior to C99, the return type of main was often omitted, defaulting
to int. This is no longer allowed."
En news:47d93098$0$2858$, candide va escriure:#include <stdio.h>
main()
NON,
« Non » quoi ?
Réponse : on ne devrait pas écrire ainsi.
En dehors du fait que tu pourrais remonter la
remarque à qui de droit (ce qui risque d'avoir plus d'effet que de
déclencher une flamewar sur Usenet), pourquoi devrait-ce être un
problème pour François ?
parce que la pratique correcte depuis C99 est de déclarer
Ça prouve en plus qu'il n'a pas configuré son compilateur comme il se
doit, c'est pourtant une des premières choses à faire quand on
commence à programmer en C
et pourtant la norme ANSI indique :
"2.1.2.2 (...)
Là, je ne vois pas le rapport. S'il y a un problème dans le code
ci-dessus, c'est parce qu'il enfreint les recommandations de 3.9.5,
mais pas 2.1.2.2 qui est vérifiée.
Ça a quand même un rapport me semble-t-il (la forme de définition est
donnée)
et, par ailleurs, j'avais cherché mais en vain une référence à
l'obsolescence qui figure comme tu le rappelles en 3.9.5.
même si je sais bien que ce n'est pas une obligation.
Qu'est ce qui est une obligation ?
Écrire int main(void) au lieu de main() n'était pas une obligation.
Moi je lis dans Harbison :
"Prior to C99, the return type of main was often omitted, defaulting
to int. This is no longer allowed."
parce que la pratique correcte depuis C99 est de déclarer
int main (void)
parce que la pratique correcte depuis C99 est de déclarer
int main (void)
parce que la pratique correcte depuis C99 est de déclarer
int main (void)
Une question un peu différente est d'expliquer pourquoi il faut éviter
void main()
[même si dans la pratique cela fonctionne partout, c'est nettement moins «
correct » que main() tout seul, main(void) ou int main(). ]
Une question un peu différente est d'expliquer pourquoi il faut éviter
void main()
[même si dans la pratique cela fonctionne partout, c'est nettement moins «
correct » que main() tout seul, main(void) ou int main(). ]
Une question un peu différente est d'expliquer pourquoi il faut éviter
void main()
[même si dans la pratique cela fonctionne partout, c'est nettement moins «
correct » que main() tout seul, main(void) ou int main(). ]