Ho cercato di farlo funzionare per alcune ore, ma non riesco a capirlo.Restituisce array di stringhe
Sto provando a scrivere una funzione in grado di restituire un array di stringhe.
#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;
}
Sono probabilmente si mescolino con i puntatori da qualche parte, perché ho il seguente output:
ciao
Segmentation Fault
Non è necessario '\ 0' alla fine di una stringa. Quando usi le virgolette doppie, il compilatore aggiunge il carattere '\ 0' per te. Hai solo bisogno del '\ 0 'se si dichiara le corde come' char Ciao [] = { 'h', 'e', 'L', 'L', 'o', '\ 0'}; ' –
I so che sono una seccatura, ma per favore liberate ciò che avete malloc'd. È una buona pratica e se lo fai sempre mentre scrivi il codice ti dimenticherai meno spesso. – Daniel
Sapevo che non avevo bisogno del terminatore null, ma ha incluso, per qualche ragione, grazie per la segnalazione. Grazie Dan, di solito lo faccio, ma questo era solo un test. Grazie. – Kewley