Ciao a tutti! Ho un problema urgente! Non capisco perchè mandando in esecuzione questo codice con in ingresso un file di tipo dat con all'interno un numero preciso di matrici di double, quando vado a stamparlo a video mi ritrovo con un elemento in più di quello presente sul file, cioè mi compare due volte l'ultimo elemento. Dove sbaglio?
codice:
void workerA1(char* fname, int* ch1){
	FILE *fd;
	double value;
	
	printf("Worker A1 \n");
	fd = fopen(fname,"rb");
	if (fd < 0){
		perror("Errore nell'apertura del file.");
		exit(1);
	}
	fseek(fd, sizeof(double), SEEK_SET);
	close(ch1[0]);
	write(ch1[1],&value,sizeof(value));	
	while(!feof(fd)){
		fread(&value,sizeof(double),1,fd);
		printf("[ WORKER 1 ]Ho letto:%f\n", value);
		write(ch1[1],&value,sizeof(value));
	}
	printf("Fine lettura A1\n");
	fclose(fd);
	value = -1;
	write(ch1[1],&value,sizeof(value));
	close(ch1[1]);
	exit(0);
}
premetto che questo è uno stralcio di codice, quindi non preoccupatevi del fatto che ci sono pipe, ecc. . .il mio problema è nella lettura del file.dat