View Single Post
Old 01-10-2008, 11:16   #1
andreapav
Member
 
Iscritto dal: Oct 2008
Messaggi: 70
[C] problemi con fwrite-fread

ciao a tutti! avrei un problema su un programmino che in teoria più banale non si può ma non mi funziona...

devo creare un file che contiene dei double generati a caso... il problema è che credo anche li crei (creati mi da sempre 100) ma poi quando li legge non sempre riesce a leggerli tutti e 100... non capisco perchè!!!

NB: vabbè in realtà creo un file con 101 elementi dove il primo è il numero di dati ma non è granchè importante...

vi piazzo qua il listato...vedete se riuscite a trovare l'errore...non ne vengo più fuori!!!

Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

FILE *file, *input;

int main( int argc, char** argv ) 
{
	char* nomefile;
	double numero;
	double *vettore;
	int total_size;
	int i,n;
	int creati;

	nomefile = "input.dat";
	total_size = 100;

	/*Scrivi file*/

	srand((int)time(NULL));
	file = fopen( nomefile, "w" );
	if ( file == NULL ) 
	{
		printf( "Impossibile creare il file!" );
		exit( 1 );
	}
             /*scrivo l'header*/
	numero = (double)total_size;
             creati = fwrite( &numero, sizeof(numero), 1, file );
	for( i=0; i < total_size; i += 1 ) 
	{
		numero = (double)rand();
		printf("%d - %f ",i , numero);
	             creati = fwrite( &numero, sizeof(numero), 1, file );
		printf("(%d) \n",creati);
	}
	n = fclose( file );
	printf("file creato con %d valori \n",i);


	/*Leggi file*/

	input = fopen( nomefile, "r" );
	printf("file: %d \n",file);
	printf("input: %d \n",input);

	if( input == NULL ) 
	{
		printf( "Impossibile aprire il file\n");
		exit( 1 );
	}

	n = 0;
             /*leggo header*/
	creati = fread( &numero, sizeof(double), 1, input );
	printf( "header: file scritti %6.3f \n", numero);
	vettore = (double*)malloc((int)numero*sizeof(double));
	creati = fread( vettore, sizeof(vettore), (int)numero, input );

	fclose( input );
	
	printf("letti: %d",creati);

	return 0;
}
andreapav è offline   Rispondi citando il messaggio o parte di esso