【发布时间】:2011-09-26 18:19:06
【问题描述】:
我有一个函数可以扫描文件并返回行数以及字符串数组中的行数,我的函数如下所示:
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;
}
当我这样称呼它时:
char** _array;
line_number = load_lines(inname, _array);
_array[0];
我得到一个分段错误,因为在函数返回后似乎没有分配数组。
【问题讨论】:
-
您是否尝试过在调试器中单步执行您的代码?
标签: c memory-management segmentation-fault