J'ai commencé à lire "The C Programming Language" (K & R) et j'ai un doute sur la fonction getchar()
.Où `getchar()` stocke-t-il l'entrée de l'utilisateur?
Par exemple, ce code:
#include <stdio.h>
main()
{
int c;
c = getchar();
putchar(c);
printf("\n");
}
Taper toomanychars
+ CTRL +D impressions (EOF) juste t
. Je pense que c'est attendu puisque c'est le premier personnage introduit.
Mais cet autre morceau de code:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
Taper toomanychars
+ CTRL +D (EOF) imprime toomanychars
.
Ma question est: pourquoi cela se produit-il si je n'ai qu'une seule variable char? Où sont stockés les autres caractères?
EDIT:
Merci à tous pour les réponses, je commence à le faire maintenant ... seul hic:
Les premières sorties du programme lorsque donné CTRL +D tout la seconde imprime la chaîne entière et attend ensuite plus d'entrée de l'utilisateur. Pourquoi attend-il une autre chaîne et ne sort pas comme la première?
Votre seconde approche ne fait que boucler jusqu'à EOF. CTRL + D (sur les systèmes unix typiques) n'entraînera pas EOF sauf si vous l'avez frappé sur une ligne. En appuyant sur CTRL + D après avoir écrit un caractère ne résulte pas EOF – nos