Ich habe folgende verknüpfte Listendatenstruktur:Wie konvertiert man eine verkettete Liste von Strings in ein Array von Zeichen in C?
struct _node {
char *text;
stuct _node *next;
}
Ich möchte, um eine Funktion schreiben, die diese verketteten Liste in ein Array von Zeichenketten mit jeder Zeichenfolge konvertiert durch \ n und das gesamte Array von \ 0 beendet beendet wird, .
Zum Beispiel, wenn die verknüpfte Liste war:
[first]->[second]->NULL
dann sollte das Array wie folgt aussehen:
[f][i][r][s][t][\n][s][e][c][o][n][d][\n][\0]
Hier mein Versuch ist:
char *convertToArray(struct _node *head){
assert(head != NULL);
int lines = findLines(head);
int i = 0;
struct _node *curr = head;
char *textBufferArray = NULL; // return NULL if lines == 0
textBufferArray = malloc(charCount(head) + lines + 1);
// malloc enough memory for all characters and \n and \0 characters
if (lines > 0){
while (curr->next != NULL){
strlcpy(textBufferArray[i], curr->text, strlen(curr->text)+1);
// I need to add a new line here
curr = curr->next;
i++;
}
}
I need to add \0 before returning
textBufferArray[charCount(head) + lines] = '\0';
return textBufferArray;
}
warum Sie keinen char Zeiger auf Array verwenden jeder String –
Curious zu speichern, warum die 'sizeof (char) *' ', die nur 1 *' ist? – chux
Beachten Sie, dass das, was Sie machen, kein Array von Strings ist. Es ist eine Reihe von Zeichen/eine riesige Zeichenfolge. Vielleicht möchten Sie Ihre Frage klären. –