我想将整个文本文件复制到动态初始化的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 ;
答案 0 :(得分:0)
在第
行total_lines = i - 1 ;
您将total_lines
设置为文件中的行数减1.这意味着您不会为所有行分配足够的内存,并且尝试读取最后一行将读取超过已分配的file
数组的结尾。