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;
} |
Partager