Parcourir une chaine en C

Fermé
céline - 29 mai 2008 à 21:17
 céline - 29 mai 2008 à 23:54
Bonjour à tous,
SI vous pouvez me montrez comment faire pour parcourir une chaine de caractere en C.
merci
A voir également:

1 réponse

Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326
29 mai 2008 à 21:39
Bonsoir
char chaine[] = "Hello!";
int iterateur=0;
while(chaine[iterateur] != '\0') { //En C, le caractère \0 correspond à la fin de ta chaine
 //Tu mets ton code ici
 iterateur++;
}


Cordialement,
1
merci MARCO
en fait jai une fonction " get_word" qui doit retourner les mots de la chaines séparés par uné space


voila ce que j'ai fait: est ce que c comme ca on fait quand la fonction retourne un type chaine caractere.
Help pliz
merci


char * getword (char[50] ligne)
{
char word [50];
for(int j=0, j< strlen(ligneà; j++){
if(substr(ligne; 1;i)==""
word =substr(ligne; 1;i);
}
return word
}
0
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326 > céline
29 mai 2008 à 21:59
Salut,
Tu n'as pas besoin de te compliquer la vie autant. Si tu as le droit de modifier la chaine d'entrée, tu peux faire ceci :
char * getword (char[50] chaine)
{ 
    for(int j=0; j<strlen(chaine); j++){
            if(chaine[j]==' ')
                            chaine[j]=',';
    }
    return chaine;
}


Si par contre tu n'as pas le droit de la modifier, je te conseille de créer un char* de même taille que ta chaine d'entrée, de parcourir la chaine caractère par caractère et de copier chaque caractère dans ta nouvelle chaine un par un (sauf quand tu lis un espace, dans ce cas tu écris une virgule). C'est mieux que d'utiliser strcpy (qui va parcourir ta chaine), puis de la reparcourir pour modifier les espaces en virgules.
0
céline > Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009

29 mai 2008 à 22:08
MERCI MARCO,
moi j'ai pas besoin de mettre des virgule,
j'ai à extraire les mots c tt pour les mettre dans des listes chainés apres.
merci

volia ce que j'ai fait :
void getword (char chaine[50])
{
int i=0;
while(chaine[i]!="")
i++;

word=substr(ligne, 0,i);
}


jai seulement cette erreur : incompatible types in assignements dans la derniere instruction
merci
jattends ta reponse
0
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326 > céline
29 mai 2008 à 22:23
Ah oui, effectivement, je suis resté avec la première question dans la tête. Je regarde ça et je reviens rapidement.
0
céline > Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009

29 mai 2008 à 22:24
ok merci
0