Bojour à tous, merci à Nicolas et Darrylsite, mais il parait qu'il ya un probleme: le resultat du code affiche toujours : "mot 1
mot 1
mot 1
mot1
.....
vous pôuvez maidez SVP à me trouver une solution .
merci
Version imprimable
Bojour à tous, merci à Nicolas et Darrylsite, mais il parait qu'il ya un probleme: le resultat du code affiche toujours : "mot 1
mot 1
mot 1
mot1
.....
vous pôuvez maidez SVP à me trouver une solution .
merci
Tu parles de quel resultat.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 #include <stdio.h> #include <stdlib.h> #include <string.h> char *extraireMot (char *mot, int *ret) { char *p=NULL ; char *p1=NULL ; char c ; if ( mot != NULL && *ret < strlen(mot) ) { /* Demarre au premier caractere non-blanc */ while ( mot[*ret+1] == ' ' ) *ret = *ret + 1 ; /* Cherche le blanc suivant */ p1 = strchr ( &mot[*ret+1], " \n"); if ( p1 != NULL && strlen(p1) > 0) { c = *p1 ; /* Sauvegarde la valeur pour ne pas modifier la chaine*/ *p1 = '\0' ; /* Met une fin temporaire */ p = strdup(&mot[*ret+1]) ; /*Duplique le mot */ *p1 = c ; /* Remet la chaine initiale */ *ret = (p1 - mot) ; /* Ajuste l'offset */ } else /* On na plus de blanc avant la fin de la chaine */ { if ( strlen(&mot[*ret+1] > 0 ) { p = strdup(&mot[*ret+1]) ; /*Duplique le mot */ *ret = strlen(mot) ; /* Ajuste l'offset */ } } } return p ; } int main (void) { int i = -1; int j = 0 ; char *extrait=NULL ; char mot[] = " hello world from developpez.com"; while ( (extrait=ExtraireMot(mot, &i)) != NULL ) printf ("Mot %d : [%s]\n", j,extrait); j = j + 1 ; free(extrait) ; extrait = NULL ; } return 0; }
ok je vais essayé, merci
j'ai juste ajouté un cas dans le cas où on n'a plus de blanc à la fin. C'est vrai pour une chaîne en dur. Quand c'est une chaine récupérée par fgets, on peut enlver cette partie, car la chaîne contiendra alors le '\n', qui sera reconnu comme séprateur par le strchr...
Merci Souviron, amis moi je traite le cas ou les phrase se terminent par un .
un point.