PDA

Visualizza la versione completa : [c]capire Se Un File Binario


esoni
21-05-2010, 18:43
CIAO VI DESCRIVO IL MIO PROBLEMA,
devo implementare un programma dove a linea di comando passo dei pathname dei file..
/main file1 file2 file3

devo sapere quali di questi pathname appartengonoa file normali e quali a file binari come faccio??
per distinguere tra file normale o directory ho trovato delle macro che usano stat() ma non c nulla x distinguere se un file binario ..
grazie

oregon
21-05-2010, 19:59
Infatti non esiste il concetto di "file binario" ... un file e' un file. Ci si puo' accedere in binario, ma non una caratteristica del file, ma del tipo di accesso.

Ma perch questo problema?

esoni
24-05-2010, 12:26
ti spiego il mio problema
devo fare un programma dove a linea di comando gli viene passato nomifile

se il file di testo devo stampare il suo contenuto per parole
se un file binario devostampare ils uo contenuto per sottostringhe testuali.

oregon
24-05-2010, 12:34
Originariamente inviato da esoni
per sottostringhe testuali.

Ovvero?

esoni
24-05-2010, 12:51
ovvero come la funzione strings() caratteri visualizzabili

oregon
24-05-2010, 14:24
Non ho ancora ben capito ...

Di quale "funzione" strings parli? Intendi il "comando" strings di Unix?

Se vuoi visualizzare i caratteri "stampabili", basta che apri comunque il file in binario e leggi tutti i byte visualizzando quelli che possono esserlo (magari usi la isgraph() e la isspace() ).

Un file di "testo" presenta dei caratteri di tipo CR/LF alla fine di ogni riga, ma non differente in altro. Non si puo' parlare, come ti ho detto, di file binario o di testo.

esoni
24-05-2010, 15:40
si la strings di unix.. per aprire in binario come faccio?

oregon
24-05-2010, 15:45
Originariamente inviato da esoni
si la strings di unix.. per aprire in binario come faccio?

Esiste la funzione fopen ... studia la sua documentazione ...

esoni
24-05-2010, 18:37
mi son letto le documentazioni!
per esempio se io vorrei aprire un file(esempio un file non di testo come un eseguibile) , e vorrei in output le sue componenti testuali al suo interno(una per riga), con modalit analoghe a quelle del comando UNIX strings come farei?
io ho provato con questo codice pensando che strings stampa solo le sottostringhe formate da caratteri visualizzabile ma non mi da il medesimo output del comando strings()




#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<errno.h>
#include<dirent.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<ctype.h>

int main(){
FILE *F;
F=fopen("stat","r");
int i;
char a;
char *buf1,*buf2;
buf1=malloc(30 * sizeof (char));
a=fgetc(F);
while(a!=EOF)
{
if(isspace(a)==0)// non spazio quindi fa parte della mia sottostringa
{
if(isgraph(a)!=0)
printf("%c",a);
a=fgetc(F);
}else
printf("\n");//finita sottostringa
a=fgetc(F);
}
}

esoni
24-05-2010, 19:09
dato che stiamo slittando un po dal titolo della discussione ho aperto una nuova discussione inerente a questo argomento
vedi http://forum.html.it/forum/showthread.php?s=&threadid=1405109

Loading