FUNZIONE DI CARICAMENTO DA FILE BINARIO

di il
27 risposte

27 Risposte - Pagina 2

  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Nel main

    a) num_giocatori quando lo dichiari e quanto vale ?

    b) array_giocatore quando lo dichiari?

    c) non ha senso passare array_giocatore dato che lo allochi dinamicamente nella funzione

    In realtà questa parte di codice dovrebbe essere ... per il main
    
    int main()
    {
    	Giocatore *array_giocatori;
    	int num_giocatori = 2; // .... o il valore che prendi da tastiera ...
    
    	array_giocatori = acquisisci_giocatori(num_giocatori);
    
    	return 0;
    }
    e l'inizio della funzione
    
    Giocatore *acquisisci_giocatori(int num_giocatori) {
    	int i;
    	Giocatore *array_giocatore;
    	
    per poi continuare con la malloc ...
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Che differenza farebbe fare quel passaggio nel main e non all'interno della funzione? Scusa la domanda ma non capisco.
    Poi, utilizzando il debugger ho notato che quando vado a comporre una lista, prendendo degli elementi da altre liste, il campo "nome" del nodo, che dopo il carattere '\0' non dovrebbe avere nulla, certe volte presenta altri char, come se sovrascrivesse il nome in un punto dove c'era qualcosa di più lungo già scritto.
    Esempio:
    a1[DIM]= "programmatore"
    a2[DIM]= "lavoro"
    strcpy(a1,a2);
    e la variabile a1 contiene "lavorommatore"

    che problema potrebbe essere?
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Ho dimenticato di scrivere che:
    num_giocatori prende il valore da una funzione e ho verificato col debugger che sia corretto..
    *array_giocatori è dichiarato e inizializzato a NULL nel main visto che dopo lo alloco dinamicamente.
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    MN9 ha scritto:


    Che differenza farebbe fare quel passaggio nel main e non all'interno della funzione? Scusa la domanda ma non capisco.
    Io non capisco questa tua domanda ... Hai provato con le modifiche che ti ho mostrato?
    che problema potrebbe essere?
    Non è un problema, è normalissimo.

    La parte in più di memoria allocata per la stringa può contenere qualsiasi cosa (può essere anche "sporca" di dati precedenti), la cosa importante è quello che c'è fino al \0

    Va bene array_giocatori nel main ma NON lo devi passare come argomento alla funzione.

    Per il resto, NON HO CAPITO se hai ancora l'errore o no.
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Quindi pensi che il problema nella funzione di caricamento si risolva con quella modifica?
    Comunque il problema è che devo fare una comparazione tra 2 stringhe, e se le due stringhe fino al carattere di '\0' sono uguali ma dopo il carattere di terminazione di stringa sono diverse, non risulterà mai che si equivalgono, o sbaglio?
    Cioè:
    programma\0
    programma\0ik
    risultano uguali?
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    MN9 ha scritto:


    Quindi pensi che il problema nella funzione di caricamento si risolva con quella modifica?
    Ma il problema non l'avevi nella fwrite?

    Comunque, la funzione che hai mostrato va corretta come ti ho detto.
    Comunque il problema è che devo fare una comparazione tra 2 stringhe, e se le due stringhe fino al carattere di '\0' sono uguali ma dopo...
    La strcmp compara solo fino al \0 e non considera oltre.
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Nella funzione di salvataggio, anche con il debugger, fila liscio.. si ferma, ma non crusha, nella funzione di caricamento. Quindi nella prima fread del primo ciclo for..
    Perfetto allora non ci sono problemi se mi mette caratteri dopo \0, grazie!
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Ma quindi ... scusa ... il problema della fwrite qual era ???
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Nessuno, ho scritto che era nella funzione di caricamento il problema. La funzione di salvataggio l'ho inserita giusto per chiarire che non ci sono errori all'interno. Almeno così sembra dal debugger.
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Ma scusa ... avevi detto che avevi un crash all'inizio della for subito alla prima fwrite ... o sto sognando??
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    No, nessun crash.. forse mi sono spiegato male, ma nel mio messaggio iniziale, specifico che il problema era nella funzione di caricamento. Forse non l'hai letto perchè non ho utilizzato i tag code e ti è sfuggito. Io sto pensando che il problema sia nel caricamento perchè con il debugger si ferma alla prima fread del primo for.
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Nella tua prima risposta hai scritto

    Comunque l'errore avviene appena entra nel primo for, la prima riga, ossia questa:
    fwrite(&informazioni.array_giocatori.nome, sizeof(char[DIM_NOME+1]), 1, fp );


    Non l'ho letto? Boh
  • Re: FUNZIONE DI CARICAMENTO DA FILE BINARIO

    Si, ho scritto male, nel primo messaggio specifico che il problema era nella funzione di caricamento. Credo che la funzione di salvataggio sia giusta (perchè con il debugger non rilevo problemi),poi non so se il problema nella funzione di caricamento derivi dalla funzione di salvataggio.
Devi accedere o registrarti per scrivere nel forum
27 risposte