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

8 réponses

  1. toto
     
    Salut Safir,

    remplaces:

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

    par:

    if (c=='\0')
    0
  2. blurk Messages postés 493 Date d'inscription   Statut Membre 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
  3. 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
  4. safir
     
    Désolé Blurk, le segmentation fault était pa
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    le strcpy va provoquer un segmentation fault si c a été déclaré comme char
    ¤
    0
  7. 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
  8. 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
  9. safir
     
    Ok, j'ai trouvé.
    Il faut faire c=' ';
    Merci beaucoup
    0