Trouver la position d'un caractère dans une chaine [Résolu]

katerson 47 Messages postés jeudi 27 avril 2006Date d'inscription 24 juin 2011 Dernière intervention - 30 juil. 2009 à 15:56 - Dernière réponse : katerson 47 Messages postés jeudi 27 avril 2006Date d'inscription 24 juin 2011 Dernière intervention
- 31 juil. 2009 à 09:20
Bonjour,

J'aimerai avoir votre avis sur le problème suivant :

Ma chaine se formatte de la façon suivante: "RD-AAA=?<CR>"
- AAA étant 3 lettres variables
- ? étant une valeur dont je ne connais pas le nombre de caractères

Mon but est simplement de récupérer la valeur ? afin de la comparer avec une variable par la suite.

Je pensais:
- Trouver la position de "=" (1)
- Trouver la position de "<CR>" (2)
- Copier dans une variable (boucle for) les caractères de la position 1 à la position 2.

En cherchant sur internet, je suis tombé sur des fonctions strstr et strchr mais celles-ci me retournent les occurences.
Je sais qu'il existe une fonction qui retourne la position d'un caractère mais je ne la trouve pas...

Si vous la connaissez, merci de m'aider!
MERCI!!!
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
BunoCS 13897 Messages postés lundi 11 juillet 2005Date d'inscription 19 juin 2018 Dernière intervention - 30 juil. 2009 à 18:10
3
Merci
Sorry.
Avec des commentaires:
p1=strchr(truc,'=');   // récupération de la 1ère occurrence du caractère '='
p2=strchr(truc,'<');   // récupération de la 1ère occurence du caractère '<'

/* ici, j'ai 2 pointeurs délimitant la sous-chaine à extraire*/

strcpy(result,p1+1);   // copie de la sous-chaine (+1 pour ne pas prendre en compte le '='
result[p2-p1-1]='\0';  // troncature de la sous-chaine grâce au 2e pointeur (-1 pour ne pas prendre en compte '<')

/* ici, dans result, j'ai la sous-chaine extraite */

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de BunoCS
BunoCS 13897 Messages postés lundi 11 juillet 2005Date d'inscription 19 juin 2018 Dernière intervention - 30 juil. 2009 à 16:46
0
Merci
Hello,
Tu as fait, je me permets de le souligner, un travail de recherche pertinent, étant donné que tu as trouvé toutes les billes.
strchr() te retourne la 1ère occurrence d'un caractère. Si tu sais que tu as un seul caractère "=", tu peux l'utiliser pour avoir sa position dans la chaine. Idem pour le <CR> avec strstr() (ou bien strchr() sur "<").
Avec ça, tu as les 2 positions voulues. Avec un strncpy() tu devrais pourvoir extraire ta sous-chaine.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
katerson 47 Messages postés jeudi 27 avril 2006Date d'inscription 24 juin 2011 Dernière intervention - 30 juil. 2009 à 17:01
0
Merci
Bruno,

Je suis d'accord mais strchr(buffer,'=') me retourne alors "=?<CR>".

En quoi cela m'aide pour trouver la POSITION de "=" dans mon buffer ?
Je voudrais obtenir la position (une valeur) dans la chaine, non pas la chaine de caractère depuis l'occurence.

Désolé, je n'y suis pas là....
Commenter la réponse de katerson
BunoCS 13897 Messages postés lundi 11 juillet 2005Date d'inscription 19 juin 2018 Dernière intervention - 30 juil. 2009 à 17:15
0
Merci
strchr() te retourne le pointeur sur la 1ère occurence. Donc, ici, un pointeur sur "="
si tu fais la même chose avec "<", tu obtiens 2 pointeurs qui encadrent ta sous-chaine

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
katerson 47 Messages postés jeudi 27 avril 2006Date d'inscription 24 juin 2011 Dernière intervention - 30 juil. 2009 à 17:39
0
Merci
Buno ,

Tout d'abord: Merci de ton aide !


J'ai bien compris, mais je ne sais pas les manipuler.

Mes 2 pointeurs me donnent l'adresse du début et de fin de la chaine recherchée ... j'en fais quoi?
Commenter la réponse de katerson
BunoCS 13897 Messages postés lundi 11 juillet 2005Date d'inscription 19 juin 2018 Dernière intervention - 30 juil. 2009 à 18:04
0
Merci
Tu peux faire un truc comme ceci:
    char *truc="RD-AAA=?<CR>";
    char result[10];
    char * p1, *p2;

    p1=strchr(truc,'=');
    p2=strchr(truc,'<');
    strcpy(result,p1+1);
    result[p2-p1-1]='\0';



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
katerson 47 Messages postés jeudi 27 avril 2006Date d'inscription 24 juin 2011 Dernière intervention - 31 juil. 2009 à 09:20
0
Merci
Merci beaucoup!
Je vais enfin pouvoir avancer !

A plus
Commenter la réponse de katerson

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.