Originariamente inviato da Alì Babà
Ecco come ho fatto, per fare in modo che mi dica quanti caretteri ho battuto alla fine.
codice:
#include <stdio.h> //in stdio.h EOF è di default -1
main()
{
double nc;
int chara;
nc=0;
for (chara = getchar(); chara != '\n'; chara = getchar())
{
++nc;
}
printf("Hai battuto %.0f caratteri\n", nc);
getchar();
}
adesso funziona come volevo, praticamente ti dici quanti caretteri hai scritto prima che si battesse Invio.
se invece volessi fare che il programma ti dice quanti caratteri hai battuto prima di scrivere as esempio "a", ho cambiato così;
codice:
#include <stdio.h> //in stdio.h EOF è di default -1
main()
{
double nc;
int chara;
nc=0;
for (chara = getchar(); chara != 'a'; chara = getchar())
{
++nc;
}
getchar();
printf("Hai battuto %.0f caratteri\n", nc);
getchar();
}
se non ce lo mettessi, il programma appena batto a non fa nulla e non esegue la riga del printf, e se premo Invio esegue l'ultima riga e chiude il programma.
Come mai?
Infine, se invece mettessti la condizione != EOF il programma si chiude direttamente nel momento in cui premo Ctrl+C (corrispondente a EOF) e quindi non eseguirà mai le ultime righe.
Come mai nel manuale originale del C allora hanno inserito questa condizione?