salut à tous,
je susi entrain de developper, mais je bloke ici,:
je veux savoir comment parcourir une ligne caracter par catere pour extraire les mots sachant que les mots sont separés par un espace.
merci
PS : je programme avec C
Version imprimable
salut à tous,
je susi entrain de developper, mais je bloke ici,:
je veux savoir comment parcourir une ligne caracter par catere pour extraire les mots sachant que les mots sont separés par un espace.
merci
PS : je programme avec C
Bonjour,
Au vu des discussions que tu a placé dans le forum C, je ne saurais que trop te conseiller de commencer par ouvrir et lire un bon livre sur le C !
Bonne journée.
extrait du man :
chaine[i] permet d'atteindre le i+1 éme caractere.( le premier indice est le 0)Citation:
char * fgets (char * s, int size, FILE * stream);
fgets() lit au plus size - 1 caractères depuis stream et les place dans
le tampon pointé par s. La lecture s’arrête après EOF ou un retour-
chariot. Si un retour-chariot (newline) est lu, il est placé dans le
tampon. Un octet nul « \0 » est placé à la fin de la ligne.
Si c'est une fonction de la bibliothèque standard que tu cherches, il y a strtok. Si tu veux développer une fonction perso, c'est pas bien compliqué. Commence d'abord par un programme qui parcoure la chaîne et affiche tous les mots de la chaîne (les mots sont séparés par un espace). Soit s la chaîne à découper.
A améliorer.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 char mot[MAX_MOT]; int i = 0, j = 0, ok = 0; while (!ok) /* Tant qu'on n'a pas encore termine */ { if (s[i] == ' ' || s[i] == '\0') /* Si on rencontre un espace ou le caractere de fin de chaine */ { mot[j] = '\0'; /* On termine le mot */ if (j != 0) /* Et si la longueur du mot n'est pas nulle */ { printf("%s\n", mot); /* On l'affiche */ j = 0; /* Puis on repart avec un nouveau mot */ } if (s[i] == '\0') /* Si c'etait le caractere de fin de chaine */ ok = 1; /* On n'a plus rien a faire */ } else { mot[j] = s[i]; /* On copie le caractere */ j++; /* Et on prepare la position du prochain caractere */ } i++; }