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

标签 c arrays gcc char segmentation-fault

我正在尝试逐行读取文件,我的代码正在寻找反斜杠,但是当它找到反斜杠时,它会以段错误退出。我在 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.
}

最佳答案

您将 array 视为直接指向数组,但事实并非如此。它指向一个指向数组的指针。您可以通过将 *array[i] 更改为 (*array)[i] 来修复它:

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

关于C - 为什么我在尝试读取包含反斜杠的字符时遇到段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56513724/

相关文章:

控制内核中的函数指针

javascript - 将字符串收集到 forEach 内的单个数组中

gcc - 编译器如何选择哪个 "get_pc_thunk"函数来获取当前地址?

linux - gcc:在 32 位平台上编译 64 位二进制文​​件

linux - ARM交叉编译时如何选择要链接的静态库?

c++ - Visual Studio 代码,#include <stdio.h> 说 "Add include path to settings"

c - 协助使用C代码和汇编代码绘制堆栈

c - 简单的 C 代码错误

javascript - 查找嵌套数组中的每个第一个数组

java - 将二叉树存储到数组中