begin process at 2012 05 30 19:17:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Trouver la position d'un caractère dans une chaine


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

Trouver la position d'un caractère dans une chaine

jeudi 30 juillet 2009 à 15:56:00 | Trouver la position d'un caractère dans une chaine

katerson

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!!!




jeudi 30 juillet 2009 à 16:46:19 | Re : Trouver la position d'un caractère dans une chaine

buno

Administrateur CodeS-SourceS

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...

jeudi 30 juillet 2009 à 17:01:50 | Re : Trouver la position d'un caractère dans une chaine

katerson

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à....

jeudi 30 juillet 2009 à 17:15:53 | Re : Trouver la position d'un caractère dans une chaine

buno

Administrateur CodeS-SourceS

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...

jeudi 30 juillet 2009 à 17:39:29 | Re : Trouver la position d'un caractère dans une chaine

katerson

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?

jeudi 30 juillet 2009 à 18:04:59 | Re : Trouver la position d'un caractère dans une chaine

buno

Administrateur CodeS-SourceS

Tu peux faire un truc comme ceci:

Code C/C++ :

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...

jeudi 30 juillet 2009 à 18:10:30 | Re : Trouver la position d'un caractère dans une chaine

buno

Administrateur CodeS-SourceS
Réponse acceptée !

Sorry.
Avec des commentaires:

Code C/C++ :

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...

vendredi 31 juillet 2009 à 09:20:49 | Re : Trouver la position d'un caractère dans une chaine

katerson

Merci beaucoup!
Je vais enfin pouvoir avancer !

A plus



Cette discussion est classée dans : trouver, caractère, chaine, position, aaa


Répondre à ce message

Sujets en rapport avec ce message

Trouver l'indice d'un caractère dans une chaine de caractères [ par new0staff ] Bonjour tout le monde!Je cherche une fonction qui me permet de trouver l'indice d'un caractère dans une chaine de caractère.J'ai utilisé une boucle qu chercher la position d'un caractère dans une chaine [ par Vishnouu ] Bonjour, je suis encore débutant en c/c++ je vous explique ce que je veux faire : voici une chaine de caractères string alpha = abcdefghijklmnopqr Position d'un caractère. [ par fireuo ] J'ai fait un programme en VB qui servait a essayer toute les combinaison d'un checksum. Je vous évite les détails. Mais dans la code VB j'ai la ligne Formater une chaîne de caractère. [ par LocalStone ] Salut à tous ! J'ai une toute petite question un peu débile, mais j'arrive vraiment plus à m'en souvenir ...Quelle est la fonction qui permet de forma Découpe une chaine de caractère suivant un séparateur donné [ par ousin ] Bonjour, exite-t-il en langage une fonction permetant de decouper une chaine de caractère suivant un séparateur donné(";" par exemple) et range les po [débutant]recevoir et envoyer une chaine de caractère sur un port série en C? [ par makan94 ] bonjours à tous,sa fait déjas plusieur semaine que je recherche désespérément une solution a ma question sans avoir trouvé de réponse: Comment recevoi Concaténation et conversion de chaine de caractère... la barbe [ par vincemail ] Bonsoir, alors voilà, j'aimerai écrire une fonction qui lit dans un fichier avec pour argument le nom du fichier (qui est un entier) donc de la forme initialiser un tableau de chaine de caractère [ par Apache_31 ] Bonjour ,Voila j'ai une classe Data qui doit avoir un tableau de chaine de caractère char *tabMeteo[]={"30","4 convertir une chaine de caratère en int sans perte de données [ par wantofirst ] bonjour tous le mondej'ai le problème suivant:j'avais une chaine de caractère (0x3de4a7fa) que je devait l'ecrire en (0xfaa7e43d);ce que j'ai réussi a Inserer des espaces dans une chaine de caractère [ par MorbhAck ] Bonjour a tous !Alors c'est très simple mais je coince un peu :j'ai une chaine de caratère :par ex:char chaine[]="0123456789";puis jaimerai lui inseré


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 : 6,256 sec (3)

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