Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] problema lettura da file in c

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Riorganizza il codice con

    fread

    ciclo ... feof
    printf
    write
    fread
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    codice:
    fread(&value,sizeof(double),1,fd);
    while(!feof(fd)){
    		printf("[ WORKER 1 ]Ho letto:%f\n", value);
    		write(ch1[1],&value,sizeof(value));
    		fread(&value,sizeof(double),1,fd);
    	}
    così!?

  4. #4
    ok grazie! xD

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.