Découper une chaîne de caractères en fonction d’un séparateur

Problème

Vous disposez d’une chaîne de caractères dont les champs sont séparés par des virgules, ou tout autre caractère, et souhaitez en extraire différents champs.

Solution

Utilisez g_strsplit() ou écrivez le code.

Discussion

Sans glib, vous pouvez utiliser transforme_texte_en_tableau() d’une recette précédente, en l’adaptant pour pouvoir spécifier le caractère séparateur en argument. Voici un autre exemple de code qui duplique les chaînes de caractères avant de les mettre dans un tableau, comme le fait g_strsplit().

La recette "Transformer une chaîne de caractères avec des retours chariot en un tableau de chaîne de caractères" est un cas particulier du problème, le séparateur étant le retour chariot. Avec glib, utilisez g_strsplit(texte, séparateur, 0).


#define TAILLE_BLOC 1024 
 
char ** 
transforme_texte_en_tableau_avec_separateur (const char *str, 
                                             const char *separator) 
{ 
  char **a = NULL; 
  int a_size = 0; 
  int a_len = 0; 
  int i; 
  int separator_len = strlen (separator); 
  const char *p0; 
  char *p1; 
 
  /* Initialisations */ 
  if (NULL == (a = malloc (TAILLE_BLOC * sizeof *a))) 
    return (NULL); 
  a_size = TAILLE_BLOC; 
  a_len = 0; 
  p0 = str; 
   
  /* Récupération des sous-chaînes...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Transformer une chaîne de caractères avec des retours chariot en un tableau de chaînes de caractères
Suivant
Récupérer le chemin et le nom d'un fichier spécifiés dans une chaîne de caractères