/* fread esempio: legge un file completo */ #include #include #include // console input/output per getch() void main () { FILE *pFile; long lSize; // intero doppia precisione char *buffer; // puntatore a un'area di memoria ancora non allocata int result; pFile = fopen ( "440.wav" , "rb" ); if (pFile==NULL) {printf ("Impossibile aprire il file"); exit (1);} // ottenendo la dimensione del file: fseek (pFile , 0 , SEEK_END); // sposta il puntatore del file alla fine lSize = ftell (pFile); //ftell legge il valore del puntatore, siccome sta alla fine del file sarà uguale alla dimensione del file rewind (pFile); // dato che il puntatore si trova alla fine del file, dobbiamo rimetterlo all'inizio // allocando la memoria giusta per contenere l'intero file: buffer = (char *) malloc (lSize); //alloca un buffer di dimensione pari a quella del file. (char *) indica il tipo di format di ciò che deve ritornare da malloc if (buffer == NULL) {printf ("Memory error"); exit (2);} // copia il file dentro il buffer: result = fread (buffer,1,lSize,pFile); if (result != lSize) {printf ("Error de lectura"); exit (3);} printf ("Il contenuto totale del file è adesso in memoria (e me pare loggico)"); // chiude e libera tutto fclose (pFile); //chiude il file free (buffer); //libera l'intero buffer getch(); }