Strncpy C++ seconde partie de chaine

JoeC++ -  
baladur13 Messages postés 47306 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

A la lecture d'un tag 2D je reçois la chaine de caractères suivante "fr: PARIS6". Je ne doit traiter que "PARIS6".

Je dois donc découper mon char* de façon à ne conserver que "PARIS6".

J'ai utilisé la fonction strncpy() je récupéré bien "fr: " mais c'est la seconde partie de la chaine que je veux avoir. Comment arriver à avoir un char* contenant uniquement "PARIS6" ?

Merci de vos réponses.

5 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Beh ma réponse se trouve au premier post...
    Soit tu fais : char *p=tab+4;
    Soit tu remplaces tab par tab+4 dans ton strncpy.
    Si c'est pas assez précis, poste-nous ton code entre deux balises "code" (à droite du bouton "souligné", et je t'indiquerai l'implémentation.
    Cdlt,

    Google is your friend
    1
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,
    Cela ne serait pas plus simple de prendre un pointeur et de le faire pointer sur le P ?
    Cela donnerait par exemple : char *p=tab+4;
    Avec strncpy, sinon il faut utiliser le même principe : dans la chaîne source, il faut mettre tab+4 au lieu de tab. (tab étant la chaîne de caractère qui vaut "fr: PARIS6".
    0
  3. Arthi
     
    Elle est ou la réponse de fiddy ?? Je suis preneur aussi d'une solution !
    0
  4. BigFattyOne
     
    Est-ce que tu reçois toujours et uniquement fr: PARIS6 en paramètre? =/
    0
    1. JoeC++
       
      nan mais sa reste des truc du genre, en: LONDON2, fr: NANTES3. C'est toujours cette structure la.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. JoeC++
     
    Alors voila,
    //Ici j'ai le contenu de base du tag (fr: PARIS6 pour cet exemple) récupéré depuis le catalogue général. 
    char* fullbody = (char*)getContext()->findData("body_505",NULL) ; 
    
    
    //ici il faut travailler char* body, pour avoir la valeur "PARIS6" 
    char* body = ... 
    
    
    //Au final,je met le char* final dans le catalogue local (body le char* final qui vaut "PARIS6") 
    getContext()-> 
    getMasterContext()>replaceMemData("KEY_MUST_GNFC_CONTENT",(char*)body) ; 
    
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ben, comme je t'ai dit : char *body = fullbody+4;
      Après tout dépend si tu veux un tableau ou si pointer sur la chaîne fullbody+4 suffit.
      0
    2. JoeC++
       
      Sincèrement un grand merci pour cette solution. Effectivement cela fonctionne bien mieux que l'usine à gaz que j'ai mise en place.
      0