При преобразовании данной строки в двумерный массив первый элемент массива заменяется случайной строкой каждый раз, когда я пытаюсь вернуться.
Вот код.Я GDBed и попробовал без строк ключа, и это все еще не удается.count_letters
и count_words
просто перебирают указанный указатель, пока не найдут ключ или не подсчитают все ключи, соответственно.
char **str_to_dp(char const *str, char const key)
{
char **arr = malloc(sizeof(*arr) * (count_words(str, key) + 1));
int i = 0;
if (!arr)
perror("get_PATH");
for (int j = 0, word = 0; str[j]; j++, i++, word = 0) {
while (str[j] == key)
j++;
arr[i] = malloc(count_letters(str + j, key) * sizeof(char));
if (!arr[i])
perror("get_PATH");
while (str[j] != key)
arr[i][word++] = str[j++];
}
arr[i] = 0;
return arr;
}
При печати arr[i]
внутри цикла и когда GDB-код еще внутрицикл, первый элемент остается в порядке.Всякий раз, когда я пытаюсь напечатать (скажем, с циклом непосредственно перед возвратом), я получаю случайные значения для первой строки (а иногда и второй, если в строке достаточно элементов).Есть идеи, почему?
Спасибо, что прочитали.