将大数组内容拷贝到小数组时,一定要用strcpy()函数,不然会出错。
错误还不容易发现,只有在你释放内存时,程序才会当掉。
int main(int argc, char **argv)
{
int i = 0;
char ** save = (char **)malloc(sizeof(char*) * 6);//./a.txt文件里只写了6行
FILE *fp = fopen("./a.txt", "r");//与当前c文件同目录下新建一个.txt文件。
if (fp)
{
char buf[1024];
while (!feof(fp))
{
memset(buf, 0, 1024);
fgets(buf, 1024, fp);
int a = strlen(buf) + 1;
save[i] = (char*)malloc(sizeof(char*)*a);
save[i] = buf;
strcpy(save[i], buf); //一定要用拷贝函数
/* printf("%s\n", save[i]);
printf("%d\n", i);*/
i++;
}
}
for (int i = 0;i < 6;i++)
{
printf("%s\n", save[i]);
}
for (int i = 0;i < 6;i++)
{
if (save[i] != NULL)
{
free(save[i]);
save[i] = NULL;
}
}
free(save);
fclose(fp);
system("pause");
}