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
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it