J'ai essayé de faire fonctionner cela pendant quelques heures maintenant, mais je n'arrive pas à comprendre. J'essaye d'écrire une fonction qui est capable de retourner un tableau de chaînes.Retour tableau de chaînes
#include <stdio.h>
#include <stdlib.h>
/**
* This is just a test, error checking ommited
*/
int FillArray(char *** Data);
int main()
{
char ** Data; //will hold the array
//build array
FillArray(&Data);
//output to test if it worked
printf("%s\n", Data[0]);
printf("%s\n", Data[1]);
return EXIT_SUCCESS;
}
int FillArray(char *** Data)
{
//allocate enough for 2 indices
*Data = malloc(sizeof(char*) * 2);
//strings that will be stored
char * Hello = "hello\0";
char * Goodbye = "goodbye\0";
//fill the array
Data[0] = &Hello;
Data[1] = &Goodbye;
return EXIT_SUCCESS;
}
Je suis probablement se mélanger avec les pointeurs quelque part parce que je reçois la sortie suivante:
bonjour
Segmentation Fault
Vous n'avez pas besoin de '\ 0 'à la fin d'une chaîne. Lorsque vous utilisez les guillemets doubles, le compilateur ajoute le caractère '\ 0' pour vous. Vous avez seulement besoin de '\ 0' si vous déclarez vos chaînes comme' Bonjour Bonjour [] = {'h', 'e', 'l', 'l', 'o', '\ 0'}; ' –
I sache que je suis une nuisance mais s'il vous plaît libérez ce que vous avez malloc'd. C'est une bonne pratique et si vous le faites toujours pendant que vous écrivez du code, vous en oubliez moins souvent. – Daniel
Je savais que je n'avais pas besoin du terminateur null mais je l'ai inclus pour une raison quelconque, merci d'avoir signalé cela. Merci Dan, d'habitude, mais c'était juste un test. Merci. – Kewley