Newsgroup: it.comp.lang.c++
Titolo: Quando il compilatore si impunta non ce nulla da fare...o no?

Salve a tutti, ecco il mio problema (forse un po OT...):
+-----------------------------------+
|                                              |
|  char c;                                |
|  FILE *stream;                    |
|  .......                                     |
|                                              |
|  do{                                      |
|         c = getc(stream);        |
|       } while ( c != 0x0D ) ;    |
+-----------------------------------+
Ora, se io faccio partire questo programmino (ovviamente completo  : )  mi
si pianta tutto alla riga
  } while ( c != 0x0D ) ;
perchč????
NOTA: il do...while dovrebbe continuare a "loopare" fin quando non il
carattere letto non č un 0x0D.

 while ( c != '\n' );
EMG

getc non ritorna un int?
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

 getc non ritorna un int?
Si. :-)
EMG

getc non ritorna un int?
 EdddajE!! anche su un altro nwsgrp mi hanno detto che getc() ritorna un
int...Ok, è vero! ma prova a stampare il risultato di getc, e vediamo se
ritorna un int o un char!
(basta mettere un %c alla printf :)
Ad ogni modo, getc ritorna il numero relativo al char letto, percio dire che
ritorna un char non è troppo sbagliato...o no?

 ritorna un int o un char!
Ovviamente, essendo passato ad una funzione variadica (printf), il
valore ritornato da getc viene _promosso_ ad intero.
Il problema e' un altro: non ti accorgi dell'end-of-file (quello che
ti e' gia' stato detto su un altro newsgroup, immagino :-).  Mi pare
sia spiegato chiaramente in tutti i testi elementari di C...
Se consideri il contesto della domanda originaria, volevo renderti
edotto del fatterello che forse leggi dopo l'eof, pescando spazzatura
varia dal tuo disco.  Entiende usted?
FYI, dalle FAQ di comp.lang.c:
12.1:   What's wrong with this code?
                char c;
                while((c = getchar()) != EOF) ...
A:      For one thing, the variable to hold getchar's return value must
        be an int.  getchar() can return all possible character values,
        as well as EOF.  By squeezing getchar's return value into a
        char, either a normal character might be misinterpreted as EOF,
        or the EOF might be altered (particularly if type char is
        unsigned) and so never seen.
        References: K&R1 Sec. 1.5 p. 14; K&R2 Sec. 1.5.1 p. 16; ISO
        Sec. 6.1.2.5, Sec. 7.9.1, Sec. 7.9.7.5; H&S Sec. 5.1.3 p. 116,
        Sec. 15.1, Sec. 15.6; CT&P Sec. 5.1 p. 70; PCS Sec. 11 p. 157.


Ok, io devo essere piuttosto tocco...ehm,
detto semplicemente, come faccio ad identificare un EOF tramite la getc
allora?
Grazie
NOTA PER ENRICO MARIA GIORDANO:
Acc, ma chi sei? Bill Gates? sai tutto! incredibile! dimmi dove hai imparato
(o dimmi se sei nato con queste doti, almeno mi metto l'animo in pace!)
Ragazzi, io propongo di fare una statua virtuale di EMG dato che è presente
in ogni dibattito del nwsgrp. : - )

 in ogni dibattito del nwsgrp. : - )
Ti ho dato questa impressione? Eppure qui c'è gente molto ma molto più
preparata di me...
EMG

 allora?
Mettendo il risultato in un int, e confrontandolo con EOF.
Se metti il risultato in un char la cosa non funziona perche'
di solito EOF ha un valore troppo grande per stare in un char.
	Mauro


Sei MATTO? Tu magari non lo hai capito ancora, ma se dici al buon Enrico Maria
Giordano qualcosa come "Sei Bill Gates" lo fai diventare verde dalla rabbia. :-)
A parte gli scherzi (e i paragoni), ho avuto la stessa impressione anch'io,
quando sono entrato nel NG la prima volta, circa sei mesi fa. Comunque è tutto
vero quello che ti ha poi detto Enrico: qui c'è davvero della gente in gamba! E'
un buon posto ove crescere. A tal punto che a me sarebbe venuta voglia di
conoscere questo irragiungibile Martelli. Ne ho sentito parlare un mucchio e un
mucchio bene: se i più assidui (nonché preparati) del NG lo ritengono un punto
di riferimento, è proprio un peccato che non si faccia più vedere da queste
parti....
Ok, fine dell'appello e scusate l'OT!
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andrea Baruzzo
Via Circonvallazione, 26
Muzzana del Turgnano (UD) - Italy
e-mail: 
andrea....@ud.nettuno.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~