将整个文本文件复制到2D数组中

时间:2014-03-23 10:35:00

标签: c arrays

我想将整个文本文件复制到动态初始化的2D数组中。我首先计算了文本文件中存在的no.of行然后

file = (char **) malloc (sizeof(char*) * total_lines) ;

for (i = 0; i < total_lines; i++)
    file[i] = (char *) malloc (sizeof (char) * MAX_CHAR) ;

MAX_CHAR预定义为1024的位置。 现在我只是将文件逐行复制到数组

k = 0 ;
while (fgets (line, sizeof(line), fp))
    strncpy (file[k++], line, MAX_CHAR) ;

但是我的程序崩溃了。

修改

char line[1024] ;

fp = fopen (filename, "r"))
//total lines
while (fgets (line, sizeof(line), fp))
        printf ("%d. %s", ++i, line) ;
total_lines = i - 1 ;

1 个答案:

答案 0 :(得分:0)

在第

total_lines = i - 1 ;

您将total_lines设置为文件中的行数减1.这意味着您不会为所有行分配足够的内存,并且尝试读取最后一行将读取超过已分配的file数组的结尾。