Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [c] File binari

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32

    [c] File binari

    Salve di nuovo,
    ho scritto un programma ke mi salva una struttura in un file prima in formato txt poi in binario.
    Però nel momento in cui salvo
    due file di seguito, in pratica nel secondo file bin ke salvo, mi
    ritrovo il contenuto che giustamente ho salvato però se per caso il
    numero di elementi del file precedente è maggiore rispetto al
    secondo, in quest'ultimo mi ritrovo anke il contenuto del primo:
    esempio: salvo nel primo file:
    <1rova>
    <2rova>
    <3rova>
    mentre nel secondo file salvo:
    <13:ciao>
    ora nel file bin del primo file mi ritrovo :
    <1rova>
    <2rova>
    <3rova>
    però nel file bin del secondo file mi ritrovo:
    <13:ciao>
    <2rova>
    <3rova>
    spero di essere stato il più chiaro possibile.
    Insomma salva anke quello precedente e non ho idee su come posso
    risolverlo.
    Posto anke il codice :
    codice:
    /*Controllo che non ci siano altri file con lo stesso nome*/ 
     if ( (PtrFile = fopen(nome,"r")) == NULL){
     /*Apertura in scrittura del file txt*/
        if ( (PtrFile = fopen(nome,"w")) == NULL){
           puts(ERR7);
        }
        else {
     /*Chiamata della funzione ToString per inizializzare *String */        
             ToString();
     /*Stampa nel file txt*/        
             fprintf(PtrFile,"%s",*String);
             fclose(PtrFile);
        }
     }  
     else {
          puts(ERR8);/*Messaggio da cancellare*/
          return KO_DUPLICATE_FILE;
     }
    /*Aggiunta dell'estensione bin al nome inserito da utente*/ 
     strcat(nome2,".bin");
     /*Apertura in scrittura del file bin*/
     if ( (PtrFile2 = fopen(nome2,"wb")) == NULL){
           puts(ERR7);
        }
     else {
    /*Scrittura della struttura nel file bin*/      
          fseek(PtrFile2,(sizeof(sp)), SEEK_SET);
          fwrite (&sp,sizeof(sp),1,PtrFile2);
    /*Chiusura file*/
          fclose(PtrFile2);
     
     }
     puts(MSG18);/*Messaggio da cancellare*/
     return SUCCESS;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ripeti il problema ...

    Tu hai un file in cui hai scritto dei dati.

    Adesso, i nuovi dati

    1) li devi aggiungere ai precedenti ?

    2) li devi salvare nel primo file cancellando i precedenti ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    devo caricare gli elementi presenti nel secondo file bin nella struttura, però se gli elementi salvati nel primo file bin sono maggiori rispetto a quelli del secondo, gli elementi in eccesso presenti nel primo compaiono nel secondo file.
    tipo:
    prima inizializzo la struttura con due identificatori e due stringhe:
    1-ciao;
    2-ciao2;
    e poi salvo il contenuto in un file bin;
    Ora reinizializzo la struttura con un identificatore e una stringa:
    45-test;
    però se ora salvo, il file bin sarà così composto:
    45-test
    2-ciao2;
    E non so come risolverlo

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè il file deve essere cancellato prima di sciverci sopra.. sennò lo sovrascrivi, ma se è più corto vedi ciò che c'era prima

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    hai centrato il problema.
    ma cm faccio?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    no aspetta non è lo stesso file! il secondo file bin deve avere un nome diverso

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    ho appena risolto utilizzando "ab" nella scrittura del file anke se ho qlke dubbio sul perché

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    ab serve per "appendere" i tuoi dati alla fine ... ecco perche' ti avevo chiesto se dovevi "aggiungere i dati" ai precedenti ...

    Ma a te serve aggiungere o avere un nuovo file con nuovi dati?

    Finche' non chiarirai (e ti chiarirai) non avrai una risposta soddisfacente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    Ho lasciato aprire il topic al mio collega col mio account,
    il problema risiedeva in altre parti del codice o meglio per via di come è strutturato l'intero codice, e sorgeva quando venivano salvati due o più file per poi essere aperti durante lo stesso ciclo di esecuzione del programma, per ora sembra risolto.
    Grazie per le rispose comunque

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.