Fopen, fprintf, fscanf??

di il
3 risposte

Fopen, fprintf, fscanf??

Ciao a tutti ho scritto questo programma in c

#include <stdio.h>
#include <stdlib.h>

main()
{
      int f;
      char c[]="boh";
      f=fopen("esempio.txt","a");
      fprintf(f,"%s",c);
      system("pause");
      }

nessun problema ma volevo sapere come faccio a creare un programma simile che mi chiede cosa scrivere nel documento di testo e quello che io scrivo nel mio programma venga poi scritto nel documento da me creato. Ho provato ad usare la funzione fscanf ma il programma quando premevo invio smetteva di funzionare, forse perchè la usavo in modo sbagliato potete dirmi come si usa la funzione fscanf(se è quella che fa a caso mio) oppure una funzione per risolvere il mio problema?
Grazie mille

3 Risposte

  • Re: Fopen, fprintf, fscanf??

    Ci sono un sacco di problemi, ad esempio perché usi una variabile di tipo intero per aprire un file? Dovrebbe essere FILE *f.
    Perché non controlli mai il risultato della funzione fopen() per vedere se l'apertura del file è avvenuta correttamente?
    Inoltre, a mio avviso, è sconveniente usare una stringa per quel che vuoi fare tu...
    Non conosci la dimensione della stringa a priori e quindi potresti essere sempre soggetto a buffer overflow.
    Il primo modo che mi viene in mente sarebbe questo
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    FILE *f;
    char c;
    f=fopen("/home/sergio/esempio.txt","w");
    if(f==NULL)
    	{
    	printf("Errore, impossibile aprire il file!\n");
    	exit(1);
    	}
    printf("Scrivi quattro cazzate a caso che appariranno nel file esempio.txt,.\n");
    printf("Per terminare l'input correttamente premere Ctrl+z su Windows o Ctrl+d per Unix.\n");
    while((c=getchar())!=EOF)
    	{
    	fprintf(f,"%c",c);
    	}
    fclose(f);
    return 0;
    }
  • Re: Fopen, fprintf, fscanf??

    Non ho capito a cos'è e a cosa serve:
    
    while((c=getchar())!=EOF)
    
    e
    
     exit(1);
    
    poi perchè devo terminare il programma con ctrl+z?? comunque grazie mille perchè ho provato e funziona solo che non ho capito bene il funzionamento grazie ancora
  • Re: Fopen, fprintf, fscanf??

    Il ciclo serve a ripetere il codice finché non premi ctrl-z (ovvero EOF)

    Per la exit studia

    http://www.cplusplus.com/reference/cstdlib/exit
Devi accedere o registrarti per scrivere nel forum
3 risposte