27/05/11 16:49
TheKaneB
Postato originariamente da Premoli:
Infatti non funziona sempre... ma allora come devo fare?
Postato originariamente da TheKaneB:
Soluzione errata... vedi sopra.
Postato originariamente da Premoli:
Ho risolto così:
Anche se sinceramente non capisco perché con EOF non funzionava a dovere
Ho risolto così:
#include <stdio.h> int main() { char str; do{ str=getchar(); }while(str!=26); return 0; }
Anche se sinceramente non capisco perché con EOF non funzionava a dovere
Soluzione errata... vedi sopra.
Infatti non funziona sempre... ma allora come devo fare?
Prima di tutto, rimetti le cose come prima, cioè usa una variabile di tipo "int".
Seconda cosa, non usare COMMAND.COM perchè il carattere 26 (0x1A) è un carattere che il DOS mette alla fine dei file, mentre lo standard Unix (quello usato dal C) richiede che l'EOF non sia un carattere ASCII, ma un codice di controllo esterno alla tabella ASCII.
Infatti EOF è un numero a 32 bit negativo, invece gli ASCII sono tutti numeri a 8bit senza segno (tutti positivi).
Risolvi usando un programma terminale moderno (CMD) e usa CTRL-Z + Invio per dare il comando di EOF. Su Linux usa invece CTRL-D.
aaa