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
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
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().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?
Cosa poi tu intenda per "selezionare parti di codice", dovresti spiegarlo meglio.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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?
fopen ecc... sono funzioni "standard ANSI C", quindi presenti in tutti i compilatori ANSI C.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
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.Originariamente inviato da kali82
mentre per l'uso di Windows si dovessero usare i comandi CreateFile, ReadFile, WriteFile.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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
Ma "selezionare parti di codice" cosa voleva significare ...?
Con la fread puoi leggere i dati in un array di unsigned char ... pero', scusa, ma scriviOriginariamente 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
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.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 ???
Okay ... comincia a leggere come funziona la funzione
fread
e usala ...
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?