关于realloc函数的一个小问题

pang123hui 2009-10-16 10:09:40

#include <stdio.h>

int main(void)
{
char *p;

p=(char *)malloc(sizeof(char));

int count=1;

while((p[count-1]=getchar())!=EOF&&p[count-1]!='\n')
p=(char *)realloc(p,++count);


puts(p);
return 0;
}


这样书写是否有什么错误?

这样的话,系统是否会自动在字符串后面加'\0',还是必须在后面加一句p[count-1]='\0'这句呢
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
woods2001 2009-10-17
  • 打赏
  • 举报
回复
型如:char *p="hello,world!";
这种的系统才会隐式得在字符串最后加 '\0'

puts(p);
这个函数要注意:puts将一个以null符终止的字符串写到标准输出,终止符不写出,最后puts又将一个换行符写到标准输出
注意在写puts函数前,自己在字符串末尾加上终止符‘\0’
woods2001 2009-10-17
  • 打赏
  • 举报
回复
需要自己加!
pang123hui 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 thefirstz 的回复:]
就是内存泄露,光有分配没有free
[/Quote]

恩,谢谢,老是忘这句free(),下次一定谨记

再请问:

系统是否会自动在字符串后面加'\0',还是必须在后面加一句p[count-1]='\0'?
昵称很不好取 2009-10-17
  • 打赏
  • 举报
回复
就是内存泄露,光有分配没有free
pang123hui 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 asimay 的回复:]
内存泄露了啊!!
[/Quote]

LS观点不一致啊,有高手给个答案好吗

还有内存泄露怎么说?
asimay 2009-10-17
  • 打赏
  • 举报
回复
内存泄露了啊!!
cBirdNO1NO1 2009-10-17
  • 打赏
  • 举报
回复
需加p[count-1]='\0'
zhongfei5006 2009-10-17
  • 打赏
  • 举报
回复
char *p;
自动加的

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧