[C ANSI]Fonction pour Parser une chaine?
Résolu/Fermé
Noémie
-
14 nov. 2005 à 12:43
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 14 nov. 2005 à 14:56
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 14 nov. 2005 à 14:56
A voir également:
- [C ANSI]Fonction pour Parser une chaine?
- Fonction si et - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Nouvelle chaîne tnt gratuite 2024 - Guide
- Fonction somme excel - Guide
2 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
14 nov. 2005 à 13:09
14 nov. 2005 à 13:09
Salut,
Je connais pas de fonction qui fait ça.
Par contre, tu peux te débrouiller avec une petite astuce, c'est de transformer les espaces en caractères de fin de chaîne : '\0' et de faire pointer chaque début de chaine sur des pointeurs.
Le mieux serait d'utiliser une liste chainée. Mais en attendant tu peux probablement de contenter de déclarer un tableau de pointeurs statique.
En bref ta fonction devrait ressembler à ça:
A utiliser comme ceci:
J'ai pas testé mais ça doit pas être loin de ça.
Tu est limitée à 100 espaces. Avec une liste chaine, la memoire et la seule limite.
Je connais pas de fonction qui fait ça.
Par contre, tu peux te débrouiller avec une petite astuce, c'est de transformer les espaces en caractères de fin de chaîne : '\0' et de faire pointer chaque début de chaine sur des pointeurs.
Le mieux serait d'utiliser une liste chainée. Mais en attendant tu peux probablement de contenter de déclarer un tableau de pointeurs statique.
En bref ta fonction devrait ressembler à ça:
void split_space (char *chaine, char *tab[100]) { unsigned int i; len=strlen(chaine); j=0; for (i=0;i<len;i++) { if (chaine[i] == ' '){ chaine[i] = '\0'; //Remplace espace par fin de chaine while (chaine[i+1] == ' ') { i++; // Tant qu'il y a des espaces on avance. } if (chaine[i+1] == '\0'){ tab[j] = NULL; return; } else{ tab[j] = &chaine[i]; j++; } if (j==100){ return; } } } }
A utiliser comme ceci:
char *chaine="machin bidule chouette"; char *tab[100]; split_space(chaine, tab);
J'ai pas testé mais ça doit pas être loin de ça.
Tu est limitée à 100 espaces. Avec une liste chaine, la memoire et la seule limite.
mamiemando
Messages postés
33077
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2024
7 749
14 nov. 2005 à 14:56
14 nov. 2005 à 14:56
man strstr
Bonne chance