joben22
Messages postés4Date d'inscriptionmercredi 10 février 2010StatutMembreDernière intervention10 octobre 2010
-
10 oct. 2010 à 00:46
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
10 oct. 2010 à 10:11
Bonsoir,
j'ai un petit soucis avec une fonction que j'essaie de coder.
En fait, je lis le contenue d'un fichier, le place dans un char* et la j'aimerai diviser ce char* en fonction des retour a la ligne. Pour ca j'ai penser a utiliser des char** .
Seulement, Segmentation Fault lol
je vous link le code si l'un de vous peut m'aider je suis preuneur.
Merci beaucoup !
char **getln (char *buffer)
{
int i = 0;
int j = 0;
int k = 0;
char **ligne;
while (buffer[i] != '\0')
{
while (buffer[i] != '\n')
{
ligne[j][k] = buffer[i];
k++;
}
j++;
}
return ligne;
}
joben22
Messages postés4Date d'inscriptionmercredi 10 février 2010StatutMembreDernière intervention10 octobre 2010 10 oct. 2010 à 01:35
Tout d'abord merci de ta reponse.
Et puis ensuite, je comprend que j'ai fait de grosse erreur lol
Mais je ne vois toujours pas comment les corriger meme si j'ai bien compris ce que tu reprochais a mon code.
J'aimerai bien, si possible, que tu m'eclaire un peu plus.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 oct. 2010 à 10:11
- i jamais incrémenté.
- pointeurs non alloués et ne pointant nullle part.
- etc, etc.
Rien à conserver, c'est le principe qui est à changer.
De la recopie serait totalement inefficace, le texte est deja dans un buffer memoire, il faut l'y laisser.
1) Parcours du buffer pour compter le nbr d'octets == 10 (les sauts de ligne).
2) Alloc d'un tableau de pointeurs, (nbr + 1) cases.
3) Reparcours du buffer:
- On place en *tab[i] l'adresse de chaque debut de ligne, c'est l'adresse derriere un octet 10 s'il n'est pas lui meme suivi d'un 10.
- Quand écrit un *tab[i], on met 0 au lieu du 10 quit suit, ainsi on a illico un tableau de chaines sans aucune recopie.