01: // fseek() ftell() e rewind()
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: #include<ctype.h>
06: 
07: #define SIZE (200)
08: 
09: int main(int argc, char **argv){
10: 
11:   FILE *bf;
12: 
13:   bf=fopen("files/test.gif", "rb");
14:   if(!bf)
15:   {
16:     perror("Errore");
17:     exit(1);
18:   }
19: 
20:   // il formato GIF contiene nei primi 6 bytes i codici ASCII di "GIF89a", li devo saltare
21: 
22:   // ricavo la posizione attuale (qui sono ad inizio file per cui e' ovvio che sia "0")
23:   long position = ftell(bf);
24:   printf("Nel file sono alla posizione %ld\n", position);
25:   fseek(bf, 6, SEEK_SET); // SEEK_SET indica che l'offset è relativo all'inizio del file, altri valori possono essere SEEK_END o SEEK_CUR
26: 
27:   position = ftell(bf);
28:   printf("Dopo la fseek() sono alla posizione %ld\n", position);
29: 
30:   short w, h;
31:   fread(&w, sizeof(short), 1, bf); // leggo un singolo short (2 byte)
32:   fread(&h, sizeof(short), 1, bf); // leggo un singolo short (2 byte)
33: 
34:   printf("L'immagine GIF ha dimensioni %dx%d\n", w, h);
35: 
36:   position = ftell(bf);
37:   printf("Dopo aver letto due short sono alla posizione %ld\n", position);
38: 
39:   rewind(bf);
40:   position = ftell(bf);
41:   printf("Dopo la rewind() sono alla posizione %ld\n", position);
42: 
43:   fseek(bf, 0, SEEK_END); // mi sposto esattamente alla fine del file
44:   position = ftell(bf);
45:   printf("Alla fine del file sono alla posizione %ld\n", position);
46: 
47: 
48:   fclose(bf);
49: 
50:   return 0;
51: }
52: 
53: 


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