Transformer une chaîne de caractères avec des retours chariot en un tableau de chaînes de caractères

Problème

À partir d’une chaîne de caractères contenant un texte, vous souhaitez obtenir un tableau de chaînes de caractères correspondant à chaque ligne du texte.

Solution

Utilisez g_strsplit() de glib ou écrivez le code vous-même.

Discussion

La fonction g_strsplit() avec en argument la chaîne "\n" comme délimiteur, transforme un texte en un tableau de chaînes de caractères correspondant aux lignes de ce texte :


g_char texte[] = "ligne1\nligne2\nligne3\n"; 
gchar **resultat; 
int i; 
 
/* Transformation */ 
resultat = g_strsplit (texte, "\n", 0); 
 
/* Affichage du résultat */ 
for (i = 0; resultat[i]; i++) 
  g_printf ("%s\n", resultat[i]); 
g_strfreev (resultat);
 

Attention ! N’oubliez pas de libérer la mémoire avec g_strfreev().

Nous pouvons aussi coder une fonction équivalente par nous-même. Deux cas sont à distinguer. Le premier consiste à effectuer exactement la même chose que g_strsplit(). Dans le second, nous allons modifier le texte et utiliser une astuce qui permet d’économiser la mémoire et le nombre d’allocations mémoire. 


char ** 
transforme_texte_en_tableau (char *text) 
{ 
  char **a; 
  int nb_cr = 0; 
  int i, j; 
 
  /* Compte...
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
Convertir un nombre en chaîne de caractères et réciproquement
Suivant
Découper une chaîne de caractères en fonction d'un séparateur