Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    8

    [C] Leggere da file di testo e riempire array

    Un saluto a tutti,

    Ho un problema che non riesco a risolvere e mi servirebbe il vostro aiuto.

    In pratico ho un file di testo costituito da un elenco(di lunghezza non nota) di valori double.
    Es:
    0.9999999960
    1.0000000000
    0.9727250796
    1.0000000000
    1.0000000000
    0.9999136817
    .....

    Io devo leggere questi valori ed inserirli in un array.

    codice:
    #include <stdio.h>
    #include <unistd.h>
    
    
    main( )
    {
    	
    	double *prob,PROB;
    	char DUMMY_CHAR;
    
    // apro file.txt
       
    	FILE *f = fopen("file.txt","r");
    
    // conto il num. di righe
    
        int cont=0;
       	
        while (fscanf(f,"%c",&DUMMY_CHAR)!= EOF) 
    	if (DUMMY_CHAR=='\n') 
    	cont++; 
    
    // alloco array dinamicamente
    
    	prob = (double *)malloc(cont * sizeof(double));
    
    	int j;
    	
    	j=0;	
    	
    // lego da file.txt i valori, li inserisco nell'array e li stampo a video.
    
    	while (!feof(f)){
    		
    		fscanf(f,"%lf \n",&PROB);
    		
    		prob[j]=PROB;
    		
    		printf("%-1.10lf \n",prob[j]);
    		
    		j++;	
    			
    		}	
    
    	
    	fclose(f);	
    	
    }
    Eseguendo non mi stampa niente ed esce.

    Immagino che il problema sia nel while e nel fscanf/printf.
    E' da un pò che non prendo in mano il c....

    Grazie mille a tutti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Ciao,

    così ad occhio direi che hai dimenticato di riposizionarti all'inizio del file dopo aver contato gli '\n'.

    Potresti usare:
    codice:
    fseek(f,0,SEEK_SET);

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    8
    Originariamente inviato da jobv
    Ciao,

    così ad occhio direi che hai dimenticato di riposizionarti all'inizio del file dopo aver contato gli '\n'.

    Potresti usare:
    codice:
    fseek(f,0,SEEK_SET);
    Grande jobv!

    Era proprio quello il problema.

    Bene dai sono orgoglioso di me stesso perchè l'allocazione dinamica l'ho fatta giusta... o quasi.. infatti non capisco perchè compilando mi dà un "warning" alla riga del malloc:

    "warning: incompatible implicit declaration of built-in function ‘malloc’"

    Che sia il mio compilatore su mac?

    Cmq ora va.
    Grazie ancora, devo fare qualcosa per segnalare che è stato risolto?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    8

    non capisco perchè compilando mi dà un "warning" alla riga del malloc:

    "warning: incompatible implicit declaration of built-in function ‘malloc’"

    Che sia il mio compilatore su mac?
    RISOLTO.

    Mancava la
    #include <stdlib.h> all'inizio.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.