01: // fgetc() e fputc()
02: // in questo esempio si sfruttano le operazioni di lettura/scrittura di un singolo byte per
03: // ricopiare il contenuto di un file in un secondo file (byte a byte)
04: // conto anche le operazioni di lettura/scrittura fatte
05: #include<stdio.h>
06: #include<stdlib.h>
07: 
08: int main(int argc, char **argv){
09: 
10:   FILE *fileinput, *fileoutput;  // definisco i puntatori alla struct FILE. Ne servono due: uno per il sorgente, l'altro per la destinazione
11:   char nomefile[1000];
12: 
13:   printf("Inserisci il nome del file da ricopiare: ");
14:   scanf("%s", nomefile);
15: 
16:   fileinput = fopen(nomefile, "r"); // apro il file in lettura
17:   if(!fileinput)
18:   {
19:     perror("Non riesco ad aprire il file indicato");
20:     exit(EXIT_FAILURE);
21:   }
22: 
23:   printf("Inserisci il nome del file in cui vuoi ricopiare il contenuto del primo file: ");
24:   scanf("%s", nomefile);
25: 
26:   fileoutput = fopen(nomefile, "w"); // apro il secondo file in scrittura (se esistente verra' azzerato!)
27:   if(!fileoutput)
28:   {
29:     perror("Non riesco ad aprire il file indicato");
30:     exit(EXIT_FAILURE);
31:   }
32: 
33:   // leggo carattere per carattere il primo file e man mano che leggo scrivo nel secondo file
34:   int c; // devo usare int per EOF
35:   int i = 0; // lo uso per contare il numero di operazioni
36: 
37:   //   int fgetc(FILE *stream);
38:   while( (c = fgetc(fileinput)) != EOF) // fgetc() restituisce EOF se arriviamo alla fine del file oppure il codice ASCII del carattere letto
39:   {
40:     printf("Ho letto [%c]\n", c);
41:     //     int fputc(int c, FILE *stream);
42:     fputc(c, fileoutput); // scrivo quanto letto nel secondo file
43:     ++i;
44:   }
45: 
46:   fclose(fileinput);
47:   fclose(fileoutput);
48: 
49:   printf("Nel ricopiare il file ho fatto %d operazioni di lettura e scrittura\n", i);
50: 
51:   return 0;
52: }
53: 


Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it