niamor23
Messages postés11Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention 7 janvier 2009
-
12 févr. 2007 à 09:59
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 2009
-
12 févr. 2007 à 15:13
Salut, voici mon probléme, mon programme contient une chaine de caractéres avec des espaces, et je voudrais envoyé chaque bloc de caractére séparé par des espaces, vers un tableau.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 12 févr. 2007 à 14:56
Mais le problème avec ton code, c'est que tu parcoure toute la chaine 2x alors qu'une seule suffirait:
while(*c)
{
if(*c == ' ')
On cherche jusqu'à trouver un espace
strcpy(tab[i], d);
On revient au début du mot puis on reparcoure une seconde fois jusqu'à
l'espace (remplacé par 0, on se retrouve donc, en plus, avec une chaine initiale
modifiée).
______
do
{
int k = 0;
while(*c !' ' && *c) tab[j][k++] *c++;
On copie dans tab[j] tout les caractères rencontrés jusqu'à tomber sur un espace ou sur un 0.
tab[j++][k] = 0;
} while(*c++);
On ajoute le 0 à la chaine destinatrice (on conserve donc la chaine
initial intacte) puis on test le caractère. Si il s'agit d'un caractère
(l'espace ici), on le saute et on continue sinon, il s'agit du 0 de fin
de chaine donc on quitte. On a parcourue la chaine qu'une seule fois.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 12 févr. 2007 à 15:13
C'est vrai que j'avais pas fait attention qu'en utilisant le strcpy() je faisais 2 parcours.
Donc je suis complètement ok avec toi.
Rien à dire ! 20/20