小编Dan*_*Ban的帖子

双指针的 malloc 分段错误

我正在制作一个程序,从文件中读取文本,将其分隔为字母数字单词,等等。我遇到了一个问题,我从文件中读入一个字符串,我试图将该字符串分隔成一个二维数组,其中每个单词都存储在一个数组中。从那里我将继续订购它们。

但是,当我为 word[n] 分配 malloc 时,我遇到了段错误。对于我正在使用的测试文件,它有大约 400 个字符。没有比说 10 个字符更长的词了,所以 (j - i + 1) 不会是一个可能导致堆栈溢出的巨大分配(除非我误解了我的分配)。

如果需要,我可以解释我的函数代码,它是对我编写的 strsplit() 函数的操作。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    if (argc != 2) {
        printf("Please provide 1 argument.\n");
        return 0;
    }

    FILE *file = fopen(argv[1], "r");
    fseek(file, 0, SEEK_END);
    size_t length = ftell(file); // Getting file size

    char buff, **words, buffer[length + 1];
    int i = 0, j = 0, n = 0, h = 0;

    buffer[length] = '\0';
    rewind(file); …
Run Code Online (Sandbox Code Playgroud)

c malloc segmentation-fault pointer-to-pointer

1
推荐指数
1
解决办法
348
查看次数