PDA

View Full Version : [C] - conteggio caratteri


norman900
21-06-2005, 12:04
Ciao,

Sto imparando le istruzioni per il conteggio caratteri in ingresso in c ma ho un problema in fase di visualizzazione del numero di caratteri immessi:
Dato il programma:

#include <stdio.h>

/* conta i caratteri in ingresso, prima versione */

main()

{

long nc;


nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);

}

... una volta lanciato e immessi dei caratteri da tastiera non ricevo la stampa del computo dei caratteri immessi ...
qualcuno rileva qualche errore ?
ciao,
luca.

RaouL_BennetH
21-06-2005, 12:07
Ciao,

Sto imparando le istruzioni per il conteggio caratteri in ingresso in c ma ho un problema in fase di visualizzazione del numero di caratteri immessi:
Dato il programma:

#include <stdio.h>

/* conta i caratteri in ingresso, prima versione */

main()

{

long nc;


nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);

}

... una volta lanciato e immessi dei caratteri da tastiera non ricevo la stampa del computo dei caratteri immessi ...
qualcuno rileva qualche errore ?

ciao,
luca.


Non vedo da dove prendi i caratteri

Brazorv
21-06-2005, 12:19
se ho capito bene vuoi contare i caratteri immessi da tastiera
se è così al posto di EOF metti '\n'

RaouL_BennetH
21-06-2005, 12:25
Ah, ho capito :)

No, a livello didattico non ci sono errori, solo che al programma devi dare in pasto un file dove siano presenti dei caratteri.

Supponendo che il tuo eseguibile tu lo abbia chiamato "conta", devi lanciarlo così:

./conta < nome_file_con_caratteri (su una macchina *nix)

conta.exe < nome_file_con_caratteri (su una macchina windows)

Con questo programma infatti, non leggi i caratteri che immetti da tastiera.

Ziosilvio
21-06-2005, 13:19
Sto imparando le istruzioni per il conteggio caratteri in ingresso in c
Finalmente qualcuno che svolge gli esercizi del K&R! ;)
... una volta lanciato e immessi dei caratteri da tastiera non ricevo la stampa del computo dei caratteri immessi
Semplice: devi inserire un end-of-file, che sotto Linux si fa con Ctrl+D, sotto Prompt dei comandi di Windows non me lo ricordo.
In alternativa, potresti redirigere lo standard input su un file di testo presente su disco, magari creato col Blocco note (o Kate, o vi, o quel che è).
Inoltre, se hai lanciato il programma da un IDE anziché dalla riga di comando, devi inserire qualche riga di codice che ritardi un po' la sua chiusura: in caso contrario, la stampa avverrà, ma tu non avrai il tempo di leggerla!
qualcuno rileva qualche errore ?
Solo filosofici:
- la dichiarazione di main è ambigua, in C le parentesi tonde vuote indicano che la lista degli argomenti è indefinita, non che è vuota;
- inoltre il tipo di ritorno dovrebbe essere int, ma in C la regola dell'int implicito è desueta;
- infine, main dovrebbe restituire un valore specifico, cosa che qui non viene specificata: il valore di default al termine di un'esecuzione corretta è 0.
L'algoritmo di conteggio dei caratteri, invece, è corretto.

norman900
21-06-2005, 15:38
Finalmente qualcuno che svolge gli esercizi del K&R! ;)

:) davvero un gran libro, un'immediatezza sorprendente ...

in ogni caso sono riuscito a ottenere sta agognata stampa, sia da file che da immissione diretta di caratteri con CTRL + D ...

grazie mille Raoul e Zio .. ;)

Ah .. dimenticavo, riguardo la funzione main senza argomenti, debbo quindi eliminare le parentesi ?

Fenomeno85
21-06-2005, 16:38
no

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
21-06-2005, 17:04
:)

Ah .. dimenticavo, riguardo la funzione main senza argomenti, debbo quindi eliminare le parentesi ?

No, e, dato che lo standard vuole che la main ritorni sempre un int, scrivila:

int main()