PDA

Visualizza la versione completa : Problema con C


Marcolo12345
13-09-2013, 20:25
Ciao ragazzi, sono nuovo ed ho appena cominciato a studiare programmazione ed ecco che subito arrivano i primi problemi:


#include <stdio.h>
main()
{
int ch, i = 0;
while ((ch = getchar())!=EOF) i++;
printf ("%d\n" ,i);
}

Questo un programma che stampa a video ogni lettera che spingo dalla tastiera no? E fino a la forse ci sono arrivato...
Ma mi spiegate a cosa servono queste variabili...
int ch, i =0; (Perch 0...)
while() continua il suo ciclo fino a quando l'espressione associata nn risulta falsa e fino a qui ok.
((ch = getchar()) In pratica qui dice che getchar uguale a 0 ?... Ma cosa vorrebbe dire?
Andando avanti: i++, una variabile con incremento e ok, ma ora cosa c'entra ora...
Oddio, help me !

Scara95
13-09-2013, 20:40
No, un programma che conta il numero di caratteri letti fino a EOF (End of file, Ctrl+z in Windows). 0 assegnato solo a i e non a ch, (ch = getchar()) assegna un nuovo carattere letto dallo stdin (Standard input) a ch e != EOF controlla che sia diverso da (appunto) EOF, i++ incrementa una variabile counter...
printf stampa il numero di caratteri.
Per essere pi precisi ch dovrebbe essere di tipo char e non int, inoltre non affatto necessaria come variabile percui si pu semplificare a
#include <stdio.h>
int main()
{
int i = 0;
while (getchar()!=EOF) i++;
printf("%d\n" ,i);
return 0;
}
E' importante dare un tipo a main, che sia int o void, nel caso di int necessario ritornare un valore (zero significa che non ci sono errori). Nel tuo codice, ad essere precisi, era implicito il tipo int, ma mancava comunque il return e compilando dovresti aver ottenuto 2 warning che segnalano una possibile condizione di errore; in generale meglio non ignorarli.

P.s. la prossima volta usa i tag code. Ti consiglio di comprare un buon libro e seguire quello.

Marcolo12345
13-09-2013, 22:08
Grazie mille per la risposta, che libro mi consigli? (Ho appena cominciato, e devo dire che molto difficile dalle guide online)

Loading