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