Tworzenie tablicy do przechowywania tablic tablic znaków w C

Mój C jest w tej chwili trochę zardzewiały, więc nie udaje mi się stworzyć czegoś, co powinno być dość podstawowe.

Pozwól mi odnieść się do tablic znaków jako ciągów dla tego posta. Sprawi, że wszystko będzie jaśniejsze zarówno dla mnie, jak i dla ciebie.

Mam tablicę, która może pomieścić 1 lub więcej ciągów. Na przykład {"ab", "cd", "ef"}. Chcę utworzyć inną tablicę do przechowywania wielu wersji tablicy ciągów. Więc coś takiego jak {{"ab", "cd", "ef"}, {"gh", "ij"}, {"kl"}}.

Mam teraz:

char *arrayOfStrings[50]; // a single array to hold multiple strings
char **arrayOfArraysOfStrings[10]; // array to hold multiple snapshots of arrayOfStrings

Tablica ciągów zmienia się w czasie i używam tablicy tablic ciągów do przechowywania historycznych migawek arrayOfStrings. Mój problem pojawia się, gdy potrzebuję uzyskać dostęp do tablicy migawek dla danych. To jest kod, który muszę umieścić rzeczy w tablicy snapshot:

arrayOfArraysOfStrings[input_index] = arrayOfStrings; // you can assume input_index is updated correctly, I've already checked that.

Wydaje się to być niepoprawne, ponieważ kiedy próbuję uzyskać dostęp i wydrukować zawartość tablicy snapshotów, wypisuje tylko informacje z najnowszych tablicOfStrings. Pomysłem, który zamierzałem z tym zrobić, było zapisanie adresu, na którym arrayOfChars wskazuje we wpisie tablicy migawek, dzięki czemu mogę uzyskać do niego dostęp później.

W tej chwili dostęp do wpisu w tablicy snapshot jest wykonywany w następujący sposób:

arrayOfArraysOfChars[historicalIndex][indexOfTargetChar]

Na kilka pytań chcę odpowiedzieć:

Czy opisana przeze mnie metoda jest odpowiednia dla tego, co próbuję zrobić, czy też w mojej ogólnej logice jest błąd?Co robię źle z moim obecnym kodem i jak mogę to naprawić?Czy jest lepszy sposób, aby to zrobić, a jeśli tak, to jak działa inicjalizacja tablic, dodatek do tablic i odczyt z tablic?

--edit 4/18 - Częścią problemu jest to, że ustawiam wskaźniki w arrayOfArraysOfStrings, aby wskazywały na to, na co wskazuje arrayOfStrings. To źle, ponieważ arrayOfStrings jest edytowane. Potrzebuję jakiegoś sposobu, aby powielić tablicę 2D ... Najlepiej po prostu przydzielając nowy blok pamięci dla arrayOfStrings, aby wskazał.

questionAnswers(5)

yourAnswerToTheQuestion