Pagina 1 di 1

problema con lo stream stdin

Inviato: dom 17 ott 2004, 2:11
da null
#include <stdio.h>
<BR>int main(){
<BR> FILE *f;
<BR> int c;
<BR> f = fopen("prova.txt","w");
<BR> while((c=getc(stdin)) != EOF)
<BR> putc(c,f);
<BR> fclose(f);
<BR> return 0;
<BR>}
<BR>
<BR>Questo programma dovrebbe scrivere sul file "prova.txt", ciò che scrivo da tastiera nello stream stdin, ma dopo aver scritto da tastiera, devo dar Ctrl+c per uscire dal programma e nel file prova.txt non screive niente.
<BR>Sapreste dirmi in cosa sbaglio?
<BR>Grazie
<BR><br>

problema con lo stream stdin

Inviato: dom 17 ott 2004, 12:19
da useless
<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>sukko@unholycathedral ~ $ gcc a.c
<BR>sukko@unholycathedral ~ $ ./a.out
<BR>ciao
<BR>sukko@unholycathedral ~ $ cat prova.txt
<BR>ciao
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>come vedi, funziona. quando hai finito devi premere ctrl+d (che è EOF), e non ctrl+c, che interrompe il programma e gli impedisce di scrivere nel file! (cosa che, tra l´altro, può essere posticipata fino all´fclose () x motivi di buffering)
<BR>
<BR>comunque ne approfitto x darti qualche consiglio:
<BR>- la dichiarazione corretta di main è int main (void) o int main (int argc, char *argv[]). tutte le altre sono deprecated (in particolare le funzioni senza parametri vanno dichiarate usando void);
<BR>- controlla SEMPRE che i comandi importanti non siano falliti. nella fattispece ci vorrebbe un controllo sulla fopen:
<BR>if ((f = fopen (...)) != NULL) ...
<BR>
<BR>segui questi pochi consigli e continua così che vai bene ;-).<br>

problema con lo stream stdin

Inviato: dom 17 ott 2004, 13:14
da null
ti ringrazio molto, so che devo mettere il controllo sulla funzione fopen, infatti nel mio programma l´ho messo, ma nel post no per non perdere tempo a scrivere in quanto il problema sapevo che era un altro.
<BR>In ogni caso ti rinfgrazio molto perchè sei l´unico a risolvermi i problemi di programmazione.
<BR>Ciao e grazie ancora<br>