C-为什么我在尝试读取包含反斜杠的字符时遇到段错误?

时间:2019-06-09 10:14:15

标签: c arrays gcc char segmentation-fault

我正在尝试逐行读取文件,并且我的代码正在寻找反斜杠,但是当找到反斜杠时,它将以segfault退出。我在Ubuntu linux 19.04和C11上使用gcc。

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 个答案:

答案 0 :(得分:2)

您正在将array当作直接指向一个数组,而并非指向数组。它指向一个指向数组的指针。您可以通过将*array[i]更改为(*array)[i]来解决此问题:

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