Ich habe versucht, dies für ein paar Stunden zu arbeiten, aber ich kann nicht scheinen, meinen Kopf drum herum.Return Array von Strings
Ich versuche, eine Funktion zu schreiben, die in der Lage ist, ein Array von Zeichenfolgen zurückzugeben.
#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;
}
Ich bin wahrscheinlich mit den Zeiger irgendwo, weil ich die folgende Ausgabe gemischt zu werden:
hallo
Segmentation Fault
Sie brauchen '\ 0' nicht am Ende eines Strings. Wenn Sie die Anführungszeichen verwenden, fügt der Compiler das Zeichen "\ 0" hinzu. Sie brauchen nur das '\ 0', wenn Sie Ihre Zeichenfolgen wie folgt deklarieren: char Hallo [] = {'h', 'e', 'l', 'l', 'o', '\ 0'};' –
I Ich weiß, dass ich ein Ärgernis bin, aber bitte befreie das, was du malloziert hast. Es ist eine gute Übung, und wenn Sie es immer tun, während Sie Code schreiben, werden Sie weniger oft vergessen. – Daniel
Ich wusste, dass ich den Nullabschluss nicht brauchte, aber aus irgendeinem Grund einschloss, danke, dass ich darauf hingewiesen habe. Danke Dan, normalerweise, aber das war nur ein Test. Vielen Dank. – Kewley