bonjour,
je cherche une fonction prédéfini qui permet d'extraire une sous-chaine à partir d'une chaine de caractère s'il existe?
merci de m'aider.
bonjour,
je cherche une fonction prédéfini qui permet d'extraire une sous-chaine à partir d'une chaine de caractère s'il existe?
merci de m'aider.
merci pour votre aide mais strstr() permet la recherche d'une chaine dans une autre chaine mais moi je cherche a extraire une sous-chaine à partir d'une chaine!
par exemple: la chaine 'abcde' je cherche à extraire 'bcde'
merci.
Bonjour,
Il n'y a pas de type « chaîne de caractères » à proprement parler en langage C. On utilise des pointeurs « char * » ou « char const * », ce qui suffit la plupart du temps. Par contre, à quelques exceptions près, ces fonctions n'allouent pas la mémoire elles-mêmes.
Ceci posé, pour extraire une sous-chaîne dans une chaîne plus longue, il suffit de pointer directement dessus. Ainsi :
Te renverra exactement ce que tu cherches. Par contre, la fin d'une chaîne de caractères est matérialisée par un caractère nul « '\0' ». Donc, pour extraire seulement « BCD », il faut soit aller placer manuellement un caractère nul à la place du E (et donc écraser la chaîne originale), soit recopier exactement la longueur qui t'intéresse vers un buffer avec strncpy(), ce qui est ce que tu veux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <stdio.h> int main (void) { char const * chaine = "ABCDE"; printf (" Chaîne : %s\n",chaine); printf ("Sous-chaîne : %s\n",chaine+1); return 0; }
Enfin, beaucoup de fonctions, à l'instar de strncpy(), permettent de spécifier directement une taille, ce qui permet de travailler sur la chaîne originale sans avoir à la recopier. C'est notamment le cas de printf(), où tu peux utiliser le champ normalement réservé à la précision des nombres pour spécifier la taille de la sous-chaîne à afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <stdio.h> #include <string.h> int main (void) { const char * chaine = "ABCDE"; char buffer[16] = { 0 }; strncpy (buffer,chaine+1,3); printf (" Chaîne : %s\n",chaine); printf ("Sous-chaîne : %s\n",buffer); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <stdio.h> int main (void) { char const * chaine = "ABCDE"; printf ("%.3s\n",chaine+1); return 0; }
Partager