puts()函数问题

erewen 2009-08-10 10:23:34
#include"stdio.h"
main()
{
char *p,*o;
p=gets(o);
puts(p);
return 0;
}
程序编译时没问题,但运行时会出现内存发生错误?
...全文
322 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgjxwl 2009-08-11
  • 打赏
  • 举报
回复
没开辟空间啊。。
qq446133969 2009-08-11
  • 打赏
  • 举报
回复
c 没又new 只能用malloc 了!!!
bxl1989 2009-08-11
  • 打赏
  • 举报
回复
mark
kojie_chen 2009-08-11
  • 打赏
  • 举报
回复
可是我没钱买房子
fiveyes 2009-08-11
  • 打赏
  • 举报
回复

#include"stdio.h"
main()
{
char *p,o[100];//给它一块地方
p=gets(o); //就能放东西了
puts(p);
return 0;
}
Zijian_Zhang 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pirate001 的回复:]
puts gets最好别用,属于危险函数。
[/Quote]

我想请教puts也危险吗???

不是gets才危险吗??输出会溢出的吗??输入溢出影响内存数据。
Tandygs 2009-08-11
  • 打赏
  • 举报
回复
没给指针分配内存空间啊
yan8790511 2009-08-11
  • 打赏
  • 举报
回复
应该会出现段错误
Pirate001 2009-08-11
  • 打赏
  • 举报
回复
puts gets最好别用,属于危险函数。
city_t 2009-08-11
  • 打赏
  • 举报
回复
没空间
Zijian_Zhang 2009-08-11
  • 打赏
  • 举报
回复
代码不严谨,呵呵。

#include <stdio.h> //双引号单引号随便吧
int main() //返回值c99说必须是int
{
char *p,*o;
p=gets(o);
puts(p);
return 0;
}

优化可以这样:
#include <stdio.h> //双引号单引号随便吧
int main() //返回值c99说必须是int
{
char *o;
gets(o);
puts(o);
return 0;
}
xu044 2009-08-10
  • 打赏
  • 举报
回复

#include <stdio.h>
#define MAXLINE 4096
main()
{
char *p, *o;
o = malloc( sizeof(char) * MAXLINE );
p=gets(o); //其实为了安全,这里最好用fgets。
puts(p);
return 0;
}
mstlq 2009-08-10
  • 打赏
  • 举报
回复
c语言没new……
收工╮(╯_╰)╭
starcat 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wanjingwei 的回复:]
加个char *o=new char[100];就可以了
[/Quote]
弱弱地问一下,C99有new吗?
starcat 2009-08-10
  • 打赏
  • 举报
回复
楼主到底想干什么呢?
xu044 2009-08-10
  • 打赏
  • 举报
回复
指针没有分配内存
wanjingwei 2009-08-10
  • 打赏
  • 举报
回复
加个char *o=new char[100];就可以了

70,011

社区成员

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

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