Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C] array e file

  1. #1

    [C] array e file

    Buonasera,

    vorrei realizzare un programma che legge da file una sequenza di numeri e metta il primo numero nel primo elemenento del vettore e il secondo numero del file nel secondo elemento del vettore ecc

    ho provato cosi

    void init(int** array_ptr,FILE* handle,int N )
    {
    int count;
    int i;

    *array_ptr=(int*)malloc(N*sizeof(int));


    for(count=0;count<N;count++)
    fscanf(handle,"%d",array_ptr[count]);

    /*
    count=0;
    while(fscanf(handle,"%d",&i)!=EOF)
    {
    (*array_ptr)[count]=i;
    count++;
    }*/

    rewind(handle);
    }

    init è una funzione che riceve l'indirizzo di un indirizzo a partire dal quale verrà memorizzato l'array di lunghezza N, l'indirizzo di handle, la lunghezza del file che è la lunghezza del vettore (determinato in un'altra funzione).

    quando il programma è nel primo for nel primo elemento del vettore ci salva tutti i numeri che sono presenti nel file es:

    il file contiene questi numeri : 123
    allora
    (*array_ptr)[0] vale 123
    (*array_ptr)[1] vale 0
    (*array_ptr)[2] vale 0

    io invece vorrei che il primo numero sia contenuto nel primo elemento del vettore..

    come posso fare?

    PS: ho provato anche cosi

    ..
    count=0;
    while(fscanf(handle,"%d",array_ptr[count])!=EOF)
    count++;
    ..

    solito risultato
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Intanto, al posto tuo, io caricherei il contenuto del file in memoria.
    Assumendo allora che il contenuto del file sia memorizzato in una stringa, potresti fare una cosa del genere

    codice:
    int main()
    {
    	char * str = "1358";
    	int arr[4];
    	int i;
    
    	for (i=0; i<4; i++) 
    	{
    		sscanf(str++,"%1d",&arr[i]);
    	}
    
    }
    Dove N=4.
    Devi assolutamente accertarti che N non vada oltre i limiti consentiti.

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Dai un'occhiata al regolamento prima di postare.. il codice va in un blocco CODE o PHP per renderlo più comprensibile.. così è troppo incasinato

  4. #4
    il file file.dat contiene:

    1234

    e basta senza invii e spazi.

    il fatto è che io voglio memorizzare su un vettore lungo N dove N è il numero degli elementi interi presi nel file.dat i numeri presenti nel file

    quindi V[0] ha da essere uguale a 1
    V[1] uguale a 2
    e cosi via..

    il codice da me scritto non va bene
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non devi usare un ciclo, ma solo la fscanf ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    eh non ho capito come..

    fscanf(handle,"%d",array_ptr); ?? cosi?
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jaso
    fscanf(handle,"%d",array_ptr);
    Sì ... hai provato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    allora ho risolto:

    il file è diventato:
    1 2 3
    (con uno spazio dopo il 3)

    il codice invece:
    Codice PHP:
    void init(int** array_ptr,FILEhandle,int N 
    {   
       
    int count;   

       
    N=N/2;      
       *
    array_ptr=(int*)malloc(N*sizeof(int));     
     
       for (
    count=0count<Ncount++)      
       {       
          
    fscanf(handle,"%d",&(*array_ptr)[count]);       
          
    printf("%d ",(*array_ptr)[count]);     
       }
             
      
    rewind(handle); 

    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Avevi scritto

    il file file.dat contiene:

    1234
    poi scrivi

    il file è diventato:
    1 2 3
    (con uno spazio dopo il 3)
    ... se cambi la situazione durante il discorso (senza neanche una spiegazione) ogni risposta e' inutile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    e c'hai ragione..
    scusa
    il file è diventato 1 2 3
    (con lo spazio dopo il tre)

    ma funziona anche aggiungendo il 4 il 5 il 6 ....

    e anche il 7 penso...

    a condizione che ci sia lo spazio dopo l'ultimo numero.

    forse anche l'8
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

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.