begin process at 2012 05 28 10:43:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Caractere \x00


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Caractere \x00

vendredi 20 mai 2005 à 18:45:57 | Caractere \x00

SnOOpss

Bonjour !
Voila je doit modifier des octets dans des valeurs binaires et j'ai des probleme avec le caractere 00.
Exemple plutot que de faire
chaine[1] =65;
chaine[2] = 66;
je fait chaine = "\x41\x42";
Mais j'ai des problemes avec \x00 exemple chaine = "\x41\x42\x00\x43\x44\"; je me retrouve avec chaine ="AB".
Y a un moyen de coder  le caractere de fin de chaine ??

Sinon ya pas un moyen plus simple pour remplacer des valeurs intermediaires, c'est a dire faire en une seule commande chaine [3] = 88 et chaine [4] = 44 sans avoir a recreer une variable et a la copier avec memcpy

samedi 21 mai 2005 à 14:53:39 | Re : Caractere \x00

Matt67

Bonjour,

Pas tres bien compris ta question...
Tu veux faire quoi au juste ??? Sois un peu plus explicite, merci.

Matt...
samedi 21 mai 2005 à 17:49:13 | Re : Caractere \x00

SnOOpss

Ben en fait si je fait chaine = "\x41\x42\x00\x43\x44\" je me retrouve avec chaine ="ab" a cause du caractere /x00 qui fini la chaine.
Est ce qu il y a un moyen d eviter ca ?

Y aurait il une commande pour changer 5 octet dans une chaine ( en plein millieu) sans utiliser memcpy ?
dimanche 22 mai 2005 à 11:22:15 | Re : Caractere \x00

Matt67

Bonjour,

ca replace 5 caracteres dans une chaine.

#include <stdio.h>

int main(void)
{
  char chaine[] = {"abcdefghijklmno"};
  char replace[] = {"12345"};
  size_t i;
 
  for(i=0; i < (sizeof(replace) - 1); i++)
    chaine[i+5] = replace[i];
   
  printf("%s\n", chaine);
  return 0;
}

Mais bon, il y a d'autres façon de faire mais là, je ne vois pas ce que tu veux faire.
Pourquoi ne pas utiliser memcpy ?
Poste un bout de code pour voir exactement.

Matt...
dimanche 22 mai 2005 à 11:42:24 | Re : Caractere \x00

SnOOpss

J'ai trouvé ca aussi
char s[10];
s = "ABCDEFGHIJ";
strncpy( s+5, "XXXX", 4 );

Mais gros probleme c'est ca
char ty[255];
sprintf(ty,"%s","\x61\x62\x00\x61\x62");
strncpy(ty,"\x61\x62\x00\x61\x62",5);

Pas moyen de me retrouver avec ma chaine complete
J'ai toujour ty ="ab" a cause du caractere NULL de fin de chaine (le /x00).


dimanche 22 mai 2005 à 16:02:32 | Re : Caractere \x00

Matt67

Bonjour,

C'est normal, '\0' c'est un caractere de fin de chaîne, tu ne peux pas faire autrement.
Si tu veux que printf("%s", ty) donne abab, il faut que tu enleves le '\0'.

Matt...
dimanche 22 mai 2005 à 17:05:31 | Re : Caractere \x00

SnOOpss

Mais le prb c'est que je travaille avec des chaines binaire pas des chaines de caractere donc certaines doivent avec certain octect  = "\0" je ne veut pas quelle me donne "abab" mais vraiment "ab(/0)ab" j arrive a les copier en faisant

char ty[255];
ty[0]='a';
ty[1]='b';
ty[2]=0;
ty[3] = 'a';
ty[4] = 'b';


char tb[255];
memcpy( tb , ty , 6 );

Mais c'est la partir en rouge que je cherche a optimiser !!

dimanche 22 mai 2005 à 19:51:10 | Re : Caractere \x00

Matt67

Bonjour,

Je ne vois pas trop ce que tu peux optimisé, mais bon !!!
Tes octets tu les recuperes dans un fichier ?

Matt...
mardi 24 mai 2005 à 19:03:01 | Re : Caractere \x00

SnOOpss

Plus ou moins en fait je suis en train d ecrire des tag id3 V2 dans des mp3 et pour chaque tag il me faut ecrire une chaine composé de /x00 et de donnés diverses comme la longeur de la chaine binaire du tag ou meme des octets dont je ne voit meme pas l utilité !!
mardi 31 mai 2005 à 15:13:09 | Re : Caractere \x00

Dvdmizo

salut,

si tu connais le détail des informations à mettre dans ta chaine tu peux peut-être utiliser une union ne faisaint un truc dans ce genre :


#include <stdio.h>
#include <string.h>

int main(void)
{
    int i ;

    //on definit le format de la structure element par element
    struct TOTO
    {
        unsigned int bidule ;
        char texte1[10] ;
        char texte2[10] ;
        unsigned int blurp ;
        unsigned int titi ;
    };

    //on associe la structure detaillee
    //avec une chaine qui va contenir
    //la totalite des donnees
    union INFOS
    {
        struct TOTO ma_structure ;
        char chaine_globale[sizeof(struct TOTO)] ;
    }infos_tag ;


    //on affecte des valeurs a chacune des donnees de la structure
    infos_tag.ma_structure.bidule = 4501 ;
    sprintf(infos_tag.ma_structure.texte1, "abcdefghi") ;
    sprintf(infos_tag.ma_structure.texte2, "jklmnopqr") ;
    infos_tag.ma_structure.blurp = 0 ;
    infos_tag.ma_structure.titi = 65535 ;

    // on tente l'affichage avec un printf
    printf("resultat printf : \n%s\n\n", infos_tag.chaine_globale) ;
    // le resultat n'est pas probant

    // alors on essaye caractere par caractere
    printf("resultat boucle (caracteres) : \n") ;
    for(i=0 ; i < sizeof(struct TOTO) ; i++)
    {
        printf("%c", infos_tag.chaine_globale[i]) ;
    }

    // on peut ainsi constater que toutes les donnees
    // existent bien dans la chaine

    // on en profite pour les afficher par valeur (en hexa)
    printf("\n\nresultat boucle (codes) : \n") ;
    for(i=0 ; i < sizeof(struct TOTO) ; i++)
    {
        printf("\\x%02X ", (unsigned char) infos_tag.chaine_globale[i]) ;
    }

    return 0 ;
}

j'espère que ça t'aidera...

1 2

Cette discussion est classée dans : chaine, caractere, valeurs, exemple, x00


Répondre à ce message

Sujets en rapport avec ce message

lire x caractere dans une chaine (pas tout) [ par gege1024 ] un exemple vaut mieux qu'un long discour:dans un fichier j'ai ecris une chaine, exemple :     20051023je veux lire cette chaine mais par morceau, c'es recupere valeurs dans ansistring [ par jerome86600 ] voila je met des variables dans une ansistring que je separe par un caractere quelquonce. j ennvoie cette chaine de caractere par udp et la recupere.e ajout chaine dans un fichier apres une autre [ par Bassman ] je m'explique :) en faite j'ai un fichier avec plusieurs lignes et chaines de caractere et je voudrais rajouter une chaine de caractere apres une aut cherche une fonction pour manipuler une chaine de caractere [ par BertaNd ] salut je cherche une fonction qui me permettrait de prendre le premier caractere d'une chaine et de le deplacer a la fin de cette meme chaine, exemple Inserer un int dans une chaine de caractere sous c++ [ par 0Cypher0 ] Salut tout le monde, desoler d'etre un boulet, mais j'ai une galere... Je desire (pour passer une requete SQL) inserer une variable int dans une chai Manipuler une chaine de caractere wxString .................. [ par satellite34 ] Bonjour,Je développe une application comprenant un wxListCtrl qui est composé de 6 colonnes : nom, type, taille, date, heure et permissions.Vous l' au Modifier un caractere dans une chaine [ par floche ] Bonjours à tous Le titre est assez explicite... Je voudrais pouvoir changer un caractere d une chaine si c'est un a mais ca ne marche pas. Merci pour rechercher chaine de caractere dans texte [ par melkiorlenecrarque ] Bonjour! Je dois rechercher une chaine de caractere dans un buffer, Quelle est la maniere la plus optimisée, sachant que je programme avec les api wi decouper une chaine de caractere [ par alahyaneali ] Bonjour à tous j'ai cherché partout comment decouper une chaine de caractere en C mais je n y arrive pas. Meme en utilisant substring(date, 1, 2) En f recuperer une chaine de caractere sur le clavier [ par nightclub ] deja bonjour a tous ! (qqpart je suis sur que cette question existe sur le forum mais j'ai pas trouvé :s ! j'ai pas fait toute les pages non plus :s !


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales