Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 32

Discussione: [C] fwrite error?

  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ant_alt
    ho corretto ma l'errore che ho postato sopra ovviamente rimane
    Scusa ... a questo punto, qual e' il codice corretto? Qual e' il problema (dato che ancora non lo hai specificato) ?

    scusami se ti faccio perdere tempo con errori di distrazione
    Nessun problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    ho postato sopra quello che mi dice DevC..il problema è sulla fwrite..se stampo con printf il char preso con fread funziona

  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ant_alt
    ho postato sopra quello che mi dice DevC..
    Ma dove? Di cosa parli? Qual e' l'errore?

    Posta nuovamente il codice corretto, quello che stai usando ... la fopen l'hai corretta?

    Le il problema è sulla fwrite..se stampo con printf il char preso con fread funziona
    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #14
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    nella seconda fwrite avevo dimenticato l'& ora funziona

    piccolo dubbio:

    file1.txt:
    codice:
    13579

    file2.txt:
    codice:
    24680
    alla fine del programma file3.txt contiene "123456789000" perchè mi stampa 3 volte 0?

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scrivi così

    codice:
       while(1)
       {
          fread(&curr, sizeof(char),1,file1);
          if(feof(file1)) break;
          fwrite(&curr, sizeof(char),1,file3);
    
          fread(&curr, sizeof(char),1,file2);
          if(feof(file2)) break;
          fwrite(&curr, sizeof(char), 1, file3);
       }
    ... capirai da solo il perche' ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da oregon
    Scrivi così

    codice:
       while(1)
       {
          fread(&curr, sizeof(char),1,file1);
          if(feof(file1)) break;
          fwrite(&curr, sizeof(char),1,file3);
    
          fread(&curr, sizeof(char),1,file2);
          if(feof(file2)) break;
          fwrite(&curr, sizeof(char), 1, file3);
       }
    ... capirai da solo il perche' ...
    praticamente quando i file finiscono io continuo a stampare (2 volte) il char curr che non viene sovrascritto, in quanto i file sono finiti

    rimanendo sul mio codice, sarebbe più giusto scrivere while (!feof(file1)&&!feof(file2))..giusto?

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' questo il punto ... il fatto e' che la feof indica che il file e' terminato dopo avere tentato la lettura con la fread ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da oregon
    Non e' questo il punto ... il fatto e' che la feof indica che il file e' terminato dopo avere tentato la lettura con la fread ...
    si credo di aver capito ma forse non mi sono spiegato

    dopo i vari cicli del while..
    - fread trova la fine del file1, stampa il vecchio curr (0)
    - fread trova la fine del file2, stampa il vecchio curr (0)

    e solo dopo, eseguendo di nuovo il test del while, esco

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Appunto ... e' per questo che ho inserito le if subito dopo le fread ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #20
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    grazie mille

    riciclo il thread perchè sempre di file si tratta

    codice:
    #include<stdio.h>
    
    void raddoppiaInFile (FILE *file, char c){
         
         while(1){
              int car= fgetc(file);
                   if(feof(file))break;
                   
                   if(car==c){
                   fputc(car, file);
                   fputc(car, file);
                    }
         }
         
    }
    
    int main (){
        FILE *file1 = fopen ("testo.txt","r+");
        char car='s';
        raddoppiaInFile (file1, car);
        fclose(file1); 
        }

    il programma dovrebbe cercare le occorrenze di "s" nel file testo.txt e raddoppiarle:
    esempio: "suonano i suonatori" -> "ssuonano i ssuonatori".

    non mi da nessun errore ma il programma non aggiorna il testo
    Ho il dubbio sulla funzione fputc.. che senso ha il prototipo che restituisce int?
    codice:
     int fputc(int c, FILE *stream)
    :master:

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.