Zero binaire en C ( URGENT SVP )

safir -  
 safir -
Bonjour,
Comment remplacer un zéro binaire par espace dans un fichier ?
J'essaye de nettoyer un fichier en entré sensé contenir un zéro binaire mais je ne sais pas comment le representer.
Voilà le petit bout de programme :

main()
{
..;
...;
/*boucle principale*/
while ( ((c=getc(stdin)) != EOF))
{
if (strcmp(c,"ICI ZERO BINAIRE")==0)
{
strcpy(c," ");
}
if( opt_out_file )
fprintf(out_file,"%c",c);
else
fprintf(stderr,"%c",c);

}
return 0;
}

Merci beaucoup
A voir également:

8 réponses

toto
 
Salut Safir,

remplaces:

if (strcmp(c,"ICI ZERO BINAIRE")==0)

par:

if (c=='\0')
0
blurk Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   160
 
zero est le seul chiffre qu'aucune base ne peut interdire
à part peut être les chiffres romains.
zéro s'exprime 0
dans :
 if (strcmp(c,"ICI ZERO BINAIRE")==0) 

c n'a pas été déclaré, il est donc impossible de connaitre son type.
si tu le compare à une chaine de plusieurs caractères, alors
que tu lui attribue un fgetc( ) il va y avoir une incompatibilité.
c'est ou char ou pointeur sur char, et là ni l'un ni l'autre ne fonctionneront. les fprintf semblent indiquer que c'est un char
dans ce cas, le strcmp ne fonctionnera pas, à remplacer par if(!c)
cordialement
¤
0
safir
 
Merci toto.
Ca me donne une segmentation fault à l'execution. je rappelle que je déclare c en char c'est à dire : char c;
0
safir
 
Désolé Blurk, le segmentation fault était pa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blurk Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   160
 
le strcpy va provoquer un segmentation fault si c a été déclaré comme char
¤
0
safir
 
Désolé Blurk, le segmentation fault était par réponse à toto.
le !c semble marcher. Il faut donc que je test sur le bon fichier.

Merci à tous et à toutes.
0
safir
 
Justement ça donne une segmentation fault sur un fichier contenant un zéro binaire.
Qu'est ce qu'il faut utiliser alors à la place du strcpy ??
Merci encore une fois.
0
safir
 
Ok, j'ai trouvé.
Il faut faire c=' ';
Merci beaucoup
0