小编use*_*906的帖子

从C中的函数内部分配字符串数组

我有一个函数扫描文件并返回行数和字符串数组中的行,我的函数如下所示:

int load_lines(char* _file, char** _array){
    FILE *infile;
    char line_buffer[BUFSIZ];
    char line_number;

    infile = fopen(_file, "r");

    ine_number = 0;
    while (fgets(line_buffer, sizeof(line_buffer), infile)) 
        ++line_number;

    fclose(infile);
    _array = malloc (line_number * sizeof(char*));
    infile = fopen(_file, "r");
    line_number = 0;

    while (fgets(line_buffer, sizeof(line_buffer), infile)) {
        _array[line_number] = malloc(strlen(line_buffer) + 1);
        strcpy(_array[line_number], line_buffer);

        //a printf on _array[line_number] works fine here
        ++line_number;
    }

    return line_number;
}
Run Code Online (Sandbox Code Playgroud)

当我这样称呼时:

char** _array;
line_number = load_lines(inname, _array);

_array[0];
Run Code Online (Sandbox Code Playgroud)

我得到一个分段错误,因为在返回函数后似乎没有分配数组.

c memory-management segmentation-fault

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

指向C中的数组问题

我有这个函数,它接受一个数组的指针(为了从函数内修改它)

int func_test(char *arr[]){
    return 0;
}

int main(){
  char var[3];
  func_test(&var);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译这个时,我得到:

passing argument 1 of ‘func_test’ from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)

为什么会出现这个问题,以及在这种情况下如何将指针传递给该数组呢?

c arrays pointers

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