He estado tratando de hacer que esto funcione durante unas pocas horas, pero parece que no puedo entenderlo.Devuelve un conjunto de cadenas
Estoy tratando de escribir una función que pueda devolver una matriz de cadenas.
#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;
}
Soy probablemente se mezclen con los punteros en algún lugar porque me sale el siguiente resultado:
hola
fallo de segmentación
No necesita '\ 0' al final de una cadena. Cuando utiliza las comillas dobles, el compilador agrega el caracter '\ 0' para usted. Solo necesita el '\ 0' si declara sus cadenas como' char Hello [] = {'h', 'e', 'l', 'l', 'o', '\ 0'}; ' –
I Sé que estoy siendo una molestia, pero por favor libera lo que has malloc. Es una buena práctica y si siempre lo haces mientras escribes el código, lo olvidarás con menos frecuencia. – Daniel
Sabía que no necesitaba el terminador nulo pero lo incluí por alguna razón, gracias por señalarlo. Gracias Dan, normalmente lo hago, pero esto fue solo una prueba. Gracias. – Kewley