Trouver l'indice d'un caractère dans une chaine de caractères

Signaler
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004
-
Messages postés
10
Date d'inscription
dimanche 28 avril 2002
Statut
Membre
Dernière intervention
5 janvier 2006
-
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 qui scrute la chaine mais ce n'est pas très élegant!!!!!

Exemple

"salut 3234olo33;324"
La fonction doit chercher l'indice du premier caractère ';' et me le renvoyer!

En vous remerçiant d'avance passez une bonne soirée!!

haffa

11 réponses

Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
strstr() dans string.h
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
plutot strchr s'il n'y a qu'un caractère a chercher, toujours dans string.h
char* p = strchr("salut 3234olo33;324", ';');
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Ouais mais strrchr() renvoie l'indice du dernier caractère trouvé, attention si y'en a plusieurs...

Sinon tu fais un while(), au moins t'es sûr que çà fait ce que tu désires.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'ai pas dit strrchr mais strchr, qui renvoie bien la premiere occurence trouvée
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Oups désolé.
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
si t'utilise des strings et pas des char*:
find_first_of ou find_last_of
Messages postés
27
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
3 novembre 2004

Salut tout le monde et merci d'avoir répondu! Bref.

J'ai utilisé cette fonction

char* p = strchr(number, ';');

//number est une chaine de caractères que je récupère depuis un fichier...
Maintenant j'ai des problemès de conversion!!
je souhaite tronquer au niveau de la position du pointeur

Exp:

number[p]=['\0];

Mais il faut mettre la valeur numérique de p et pas la pos. du pointeur!

Merci d'avance!

haffa
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
char *c = buffer;
while(*c) {if(*c ';') {*c 0; break;}
c++;
}

FINI

ciao...
BruNews, MVP VC++
Messages postés
10
Date d'inscription
dimanche 28 avril 2002
Statut
Membre
Dernière intervention
5 janvier 2006

char *c = buffer;
while(*c) {if(*c ';') {*c 0; break;}
c++;
}

FINI

j'obtiens une segmentation fault avec ça

Par contre strchr renvoit la 1ere occurence pas la position de celle ci ou alors c'est que je n'arrive pas à la récupérer

moi je voudrais rechercher D dans ABCDEF renvoit 4

Merci

.: Newneo :.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Je trouve que le break est pas joli:

char *c = buffer;
while(*c) {if(*c ';') *c 0;
else c++;
}

sinon, tu peux faire

char buffer[] = "ABCDEF";
char* p = strchr(buffer, 'D');
if(p)
{i p - buffer; // i 4
}
Messages postés
10
Date d'inscription
dimanche 28 avril 2002
Statut
Membre
Dernière intervention
5 janvier 2006

impecc merci bien

.: Newneo :.