Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460

    [C] lettura file in binario

    ho scritto il seguente programma
    codice:
    #include <stdio.h>
    
    #define BLOCKSIZE 512
    
    typedef char DATA;
    
    void scanInBinaryFile( char *, char * );
    
    int main(){
        char nomeF1[20] = {"in.txt"};
        char nomeF2[20] = {"binary.txt"};
        scanInBinaryFile( nomeF1, nomeF2 );
    }
    
    void scanInBinaryFile( char *nomeFile1, char *nomeFile2 ){
        FILE *f1;
        f1=fopen( nomeFile1, "rb");
        if (f1!=NULL){
            DATA myArray[BLOCKSIZE];
            int index;
            int intFread;
            FILE *f2;
            f2=fopen(nomeFile2,"w+");
            while ( (intFread = fread( myArray, sizeof(DATA), BLOCKSIZE, f1 ))>0 ){
                for( index = 0; index < BLOCKSIZE; index++){
                    if(f2!=NULL){
                        fprintf( f2, "%c", myArray[index]);
                    } else printf("\n----\nErrore durante l'apertura del file con fopen()\n----\n");
                    fprintf( f2, "\n --- %d --- \n", intFread );
                }
            }
            fclose(f1);
            fclose(f2);
        } else printf("\n----\nErrore durante l'apertura del file con fopen()\n----\n");
    }
    2 file in gioco e 1 funzione void.

    la funzione prende il primo argomento come nome del file f1 che andrà a leggere ed interpretare in binario poi scriverà l'equivalente del binario in char in un secondo file f2.

    il file in.txt è molto semplice, è parte di una tabella ASCII

    codice:
    A 65 
    B 66 
    C 67 
    D 68 
    E 69 
    F 70 
    G 71 
    H 72 
    I 73 
    J 74 
    K 75 
    L 76 
    M 77 
    N 78 
    O 79 
    P 80 
    Q 81 
    R 82 
    S 83 
    T 84 
    U 85 
    V 86 
    W 87 
    X 88 
    Y 89 
    Z 90
    dopo l'esecuzione mi viene fuori un file del genere

    codice:
    A
     --- 179 --- 
     
     --- 179 --- 
    6
     --- 179 --- 
    5
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    B
     --- 179 --- 
     
     --- 179 --- 
    6
     --- 179 --- 
    6
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    C
     --- 179 --- 
     
     --- 179 --- 
    6
     --- 179 --- 
    7
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    D
     --- 179 --- 
     
     --- 179 --- 
    6
     --- 179 --- 
    8
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    E
     --- 179 --- 
     
     --- 179 --- 
    6
     --- 179 --- 
    9
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    F
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    0
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    G
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    1
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    H
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    2
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    I
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    3
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    J
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    4
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    K
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    5
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    L
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    6
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    M
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    7
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    N
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    8
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    O
     --- 179 --- 
     
     --- 179 --- 
    7
     --- 179 --- 
    9
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    P
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    0
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    Q
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    1
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    R
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    2
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    S
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    3
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    T
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    4
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    U
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    5
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    V
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    6
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    W
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    7
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    X
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    8
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    Y
     --- 179 --- 
     
     --- 179 --- 
    8
     --- 179 --- 
    9
     --- 179 --- 
     
     --- 179 --- 
    
    
     --- 179 --- 
    
    
     --- 179 --- 
    Z
     --- 179 --- 
     
     --- 179 --- 
    9
     --- 179 --- 
    0
     --- 179 --- 
    u
     --- 179 ---
    a me piacerebbe leggere il file in binario, cioé senza una codifica ASCII, solo bit/byte, siccome è la prima volta che voglio leggere un file in questo modo, dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Se leggi un byte in binario e poi lo riscrivi è ovvio che viene fuori sempre lo stesso carattere.. cosa dovrebbe succedere?

    All'inizio cosa avevi in mente di fare?

  3. #3
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da XAlbeX
    Se leggi un byte in binario e poi lo riscrivi è ovvio che viene fuori sempre lo stesso carattere.. cosa dovrebbe succedere?

    All'inizio cosa avevi in mente di fare?
    mettere nel secondo file una trasposizione in binario del contenuto del primo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In che senso "trasposizione in binario"?

    E tutti quei --- 179 --- da dove vengono?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    [b]E tutti quei --- 179 --- da dove vengono?
    Così a occhio, è il numero di byte letti dalla fread.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da ESSE-EFFE
    Così a occhio, è il numero di byte letti dalla fread.
    Sì, ma a cosa serve visualizzarli?

    Non comprendo ancora la richiesta ... sarà il caldo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Sì, ma a cosa serve visualizzarli?

    Non comprendo ancora la richiesta ... sarà il caldo ...
    Quello me lo sono chiesto anche io, immagino gli serva per il debug, però poi credo che il ciclo debba farlo su intFread, non su BLOCKSIZE.

    Per quanto riguarda la richiesta... la mia ipotesi è che si voglia visualizzare il carattere in notazione binaria, quindi qualcosa tipo

    A 65 01000001
    B 66 01000010

    e così via... Se così fosse ovviamente non basta (serve) leggere il file in binario...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da ESSE-EFFE
    Quello me lo sono chiesto anche io, immagino gli serva per il debug, però poi credo che il ciclo debba farlo su intFread, non su BLOCKSIZE.
    Ovviamente concordo.

    Per quanto riguarda la richiesta...
    Non so ... sarà lui a spiegarcelo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    ha ragione ESSE-EFFE sia sul debug ed ha anche capito quello che voglio fare, ho premesso che è la prima volta che voglio fare una roba del genere e probabilmente ho sbagliato qualcosa nell'algoritmo e nella sintassi.

    BLOCKSIZE è il massimo che posso leggere, perché dovrei fare il ciclo su BLOCKSIZE anziché su quanto effettivamente letto da fread()?

  10. #10
    Originariamente inviato da Freax
    ho premesso che è la prima volta che voglio fare una roba del genere e probabilmente ho sbagliato qualcosa nell'algoritmo e nella sintassi.
    Non sei molto lontano dall'ottenere quello che ti serve. Solo che non puoi semplicemente utilizzare myArray[index], ma devi crearti una funzione che prenda quel valore in ingresso e restituisca una stringa con il corrispondente valore binario.

    Comunque intFread non stamparlo per ogni byte, basta una volta dopo la fread.

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.