Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22

    Lettura file binari in C per Windows

    Ciao!
    Ho iniziato da pochissimo ad usare C.
    Devo leggere un file binario e selezionare parti di codice, usando Windows e non linux.
    Sapreste dirmi come fare?

    Grazie tante, spero possiate aiutarmi.

    Chiara

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Lettura file binari in C per Windows

    Originariamente inviato da kali82
    Ho iniziato da pochissimo ad usare C.
    Devo leggere un file binario e selezionare parti di codice, usando Windows e non linux.
    Sapreste dirmi come fare?
    In C fopen() per aprire un file (e nota, se è da gestire come file binario, specificare anche il modo "b"), poi fread() per leggere un blocco di byte e quindi fclose().

    Cosa poi tu intenda per "selezionare parti di codice", dovresti spiegarlo meglio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22
    Grazie per l'aiuto.
    L'avevo gia' letto, ma pensavo che il comando fopen dovesse essere usato solo nel caso di compilatore che girasse sotto linux, mentre per l'uso di Windows si dovessero usare i comandi CreateFile, ReadFile, WriteFile. Tu che ne dici?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da kali82
    L'avevo gia' letto, ma pensavo che il comando fopen dovesse essere usato solo nel caso di compilatore che girasse sotto linux
    fopen ecc... sono funzioni "standard ANSI C", quindi presenti in tutti i compilatori ANSI C.

    Originariamente inviato da kali82
    mentre per l'uso di Windows si dovessero usare i comandi CreateFile, ReadFile, WriteFile.
    Quelle fanno parte delle API Win32, utilizzabili se si ha il Platform SDK della MS. Chiaramente sono funzioni specifiche, un po' più complicate e sopratutto NON portabili su altri S.O.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22
    Grazie assai!!!

    Ultima domanda. Come faccio a riconoscere un Byte espresso in esadecimale, ossia 2 cifre? Il mio codice, letto con un editor per file binari, è del tipo 10 A3 4D ... e io devo salvarmi solo i pezzi di codice compresi tra 10 34 e 10 03.

    Chiara

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma "selezionare parti di codice" cosa voleva significare ...?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da kali82
    Grazie assai!!!

    Ultima domanda. Come faccio a riconoscere un Byte espresso in esadecimale, ossia 2 cifre? Il mio codice, letto con un editor per file binari, è del tipo 10 A3 4D ... e io devo salvarmi solo i pezzi di codice compresi tra 10 34 e 10 03.

    Chiara
    Con la fread puoi leggere i dati in un array di unsigned char ... pero', scusa, ma scrivi

    10 A3 4D

    e poi dici

    tra 10 34

    e 10 03


    Cosa c'entra 10 34 e 10 03 con 10 A3 4D ???

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22
    Originariamente inviato da oregon
    Con la fread puoi leggere i dati in un array di unsigned char ... pero', scusa, ma scrivi

    10 A3 4D

    e poi dici

    tra 10 34

    e 10 03


    Cosa c'entra 10 34 e 10 03 con 10 A3 4D ???
    10 A3 4D erano un esempio, il mio codice è lungo e ho preso solo i primi tre dati. Devo leggere il file fino ad arrivare al valore 10 34, poi salvare i dati e quando incontro 10 03 il messaggio che mi interessa finisce. Non so se mi sono spiegata bene.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Okay ... comincia a leggere come funziona la funzione

    fread

    e usala ...

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22
    I vostri consigli mi hanno aiutato, grazie.
    Ho scritto un file che legge la stringa di unsigned char contenuta nell'intero file, la memorizza e la ricopia in un nuovo file. Non e' proprio quello che mi serve ma e' il mio primo programma in assoluto. Lo posto di seguito:

    #include <stdio.h>
    #include <stdlib.h>

    #define kLunghezzaMaxStringa 100000
    #define fin "input.bin"
    #define fout "output.bin"

    char *stringa;

    int main (void);
    int LeggiDaFile(void);
    int ScriviSuFile(void);

    int main (void)
    {
    int errore;
    errore=LeggiDaFile();
    if(errore)
    return errore;
    errore=ScriviSuFile();
    if(errore)
    return errore;
    return(0);
    }

    int LeggiDaFile(void)
    {
    FILE *ingresso;
    ingresso=fopen(fin,"rb");
    if(ingresso==NULL)
    return (-1);
    stringa=calloc(kLunghezzaMaxStringa,sizeof(char));
    if(stringa==NULL)
    return (-2);
    fread(ingresso,stringa);
    fclose(ingresso);
    return(0);
    }

    int ScriviSuFile(void)
    {
    FILE *uscita;
    uscita=fopen(fout,"wb");
    if(uscita==NULL)
    return (-1);
    fwrite(uscita,stringa);
    return(0);
    }

    Pensate che vada bene? Ho capito il senso di fread e fwrite?

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.