Я пытался заставить это работать в течение нескольких часов, но, похоже, я не могу его обвести.Возвращаемый массив строк
Я пытаюсь написать функцию, которая может возвращать массив строк.
#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;
}
Я, вероятно, получать вперемешку с указателями где-то, потому что я получаю следующий результат:
привет
Сегментация Fault
Вам не нужно '\ 0' в конце строки. Когда вы используете двойные кавычки, компилятор добавляет вам символ '\ 0'. Вам нужно только '\ 0', если вы объявляете свои строки, как' char Hello [] = {'h', 'e', 'l', 'l', 'o', '\ 0'}; ' –
I знаю, что мне неприятно, но, пожалуйста, освободи, что у тебя есть malloc'd. Это хорошая практика, и если вы всегда это делаете, когда пишете код, вы будете забывать реже. – Daniel
Я знал, что мне не нужен нулевой ограничитель, но включил его по какой-то причине, спасибо, что указали это. Спасибо, Дэн, я обычно это делаю, но это был просто тест. Благодарю. – Kewley