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?
premetto che questo è uno stralcio di codice, quindi non preoccupatevi del fatto che ci sono pipe, ecc. . .il mio problema è nella lettura del file.datcodice: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); }

Rispondi quotando