C - Почему я получаю сегфо, когда пытаюсь прочитать символ, содержащий обратную косую черту? - PullRequest
1 голос
/ 09 июня 2019

Я пытаюсь прочитать файл построчно, и мой код ищет обратную косую черту, но когда он находит ее, он завершается с segfault.Я использую gcc на Ubuntu Linux 19.04 и C11.

void test(char **array) {
    boolean a = *array[0] == '\\';
    boolean b = *array[2] == '\\';
    boolean c = *array[1] == '\\';  //I get segfault here.
}

int main() {
    FILE *messages = fopen("messages.json", "r");
    char *array = NULL;
    size_t size;
    getline(&array, &size, messages);
    test(&array);  //array contains "{\n" string here.
}

1 Ответ

2 голосов
/ 09 июня 2019

Вы рассматриваете array, как будто он указывает непосредственно на массив, а это не так. Он указывает на указатель, который указывает на массив. Вы можете исправить это, изменив *array[i] на (*array)[i]:

void test(char **array) {
  boolean a = (*array)[0] == '\\';
  boolean b = (*array)[2] == '\\';
  boolean c = (*array)[1] == '\\';
}
...