01: // fgets() e fputs()
02: // come nell'esercizio precedente, ricopio il contenuto di un file in un secondo file
03: // ma stavolta uso operazioni di lettura/scrittura multibyte
04: #include<stdio.h>
05: #include<stdlib.h>
06: 
07: int main(int argc, char **argv){
08: 
09:   FILE *fileinput, *fileoutput;  // definisco il puntatore alla struct FILE
10:   char nomefile[1000];
11: 
12:   printf("Inserisci il nome del file da ricopiare: ");
13:   scanf("%s", nomefile);
14: 
15:   fileinput = fopen(nomefile, "r"); // apro il file in lettura
16:   if(!fileinput)
17:   {
18:     perror("Non riesco ad aprire il file indicato");
19:     exit(EXIT_FAILURE);
20:   }
21: 
22:   printf("Inserisci il nome del file in cui vuoi ricopiare il contenuto del primo file: ");
23:   scanf("%s", nomefile);
24: 
25:   fileoutput = fopen(nomefile, "w"); // apro il secondo file in scrittura (se esistente verra' azzerato!)
26:   if(!fileoutput)
27:   {
28:     perror("Non riesco ad aprire il file indicato");
29:     exit(EXIT_FAILURE);
30:   }
31: 
32:   
33:   char buffer[100]; // leggo fino a 100 caratteri alla volta
34:   int i = 0; // lo uso per contare il numero di operazioni
35: 
36:   // char *fgets(char *s, int size, FILE *stream);
37:   while( fgets(buffer, 100, fileinput) != NULL) // fgets() restituisce NULL se non riesce a leggere nulla
38:   {
39:     printf("Ho letto [%s]\n", buffer);
40:     //  int fputs(const char *s, FILE *stream);
41:     fputs(buffer, fileoutput); // scrivo quanto letto nel secondo file
42:     ++i;
43:   }
44: 
45:   fclose(fileinput);
46:   fclose(fileoutput);
47: 
48:   printf("Nel ricopiare il file ho fatto %d operazioni di lettura e scrittura\n", i);
49: 
50:   return 0;
51: }
52: 


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