【发布时间】:2013-12-10 11:32:06
【问题描述】:
我有一个关于使用 fgets() 和 char* 字符串的简单问题。
....
char *temp;
FILE fp=fopen("test.txt", "r");
fgets(temp, 500, fp);
printf("%s", temp);
....
这段代码运行不好。
但在我将char *temp 修改为char temp[100]; 后,代码运行良好。
这两者有什么区别?
当我用谷歌搜索时,有人说必须使用 malloc() 将内存分配给char *...
但我无法理解。
【问题讨论】:
-
如果您不分配内存,指针将指向什么?要记住这一点,在声明后立即将 NULL 分配给指针。释放指针的内存时同样如此。在删除后也分配 NULL。没有分配内存的指针是一个非常常见的错误,会给你带来可怕的分段错误。