Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- //fonction qui prend en argument une chaine de caractère s[]
- //et le caractère spécifique du séparateur
- //Elle retourne ensuite un tableau de sous-chaines.
- void strsplit(char s[], char sep) {
- //nombre de séparateurs
- int nbsep = 0, indfinmot;
- //compte et stocke le nombre de séparateurs dans nbsep
- for (int i = 0; s[i] != '\0'; i++)
- if (s[i] == sep)
- nbsep++;
- printf("Le nombre de séparateurs est de: %d\n", nbsep);
- //créé un tableau de pointeurs de taille nbsep+1
- char **tab;
- tab = malloc(nbsep + 1);
- printf("test");
- //i est la l'indice qui va parrcourir toute la chaine s[]
- //n est l'indice de la case du n-éme mot dans tab
- //j va etre permetre de stocker les lettres dans le tableau
- int i = 0, n = 0;
- //boucle qui va traverser toute la chaine s[]
- while (s[i] != '\0') {
- printf("J'entre dans la boulce while");
- //sous-boucle qui va stocker le n-éme mot dans la n-éme case
- //du tableau
- while (i != sep && i != '\0')
- i++;
- //Allocation dun espace de la taille de la n-éme chaine de
- //caractères
- tab[n] = malloc(i+1);
- //cette boucle va stocker la n-éme chaine de caractére dans la
- //n-éme case du tableau
- for (int j = 0; j < i; j++) {
- tab[n][j] = s[j];
- indfinmot = j + 1;
- }
- //On s'assure que le dernier caractère du tableau est bien le
- //caractère null
- tab[n][indfinmot] = '\0';
- printf("Chaine num %d = %s\n", n, tab[n]);
- if (s[i] == sep)
- s = s + i + 1;
- n++;
- }
- for (int k = 0; k < nbsep; k++)
- printf("%d --> %s\n", k, tab[k]);
- }
- int main(int argc, char * argv[], char * env[]) {
- strsplit("/bin :/usr/bin :/usr/local/bin", ':');
- return 0;
- }
Add Comment
Please, Sign In to add comment