一个小程序,运行出错,帮忙看看。

jzlzk 2003-08-25 03:48:12
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ss(char *s)
{
char p[10]="abcdefg\0";
strncpy(s,p,strlen(p));
}
void mm()
{
char *s;
ss(s);
printf("%s\n",s);
}
int main()
{
mm();
return 0;
}

运行后:
abcdefg
Segmentation fault
...全文
44 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
oopig 2003-08-26
  • 打赏
  • 举报
回复
改成这样子就可以了,如楼上所说,是没有分配内存块的问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ss(char *s)
{
char p[10]="abcdefg\0";
strncpy(s,p,strlen(p));
}
void mm()
{
char s[256];
ss(s);
printf("%s\n",s);
}
int main()
{
mm();
return 0;
}
dwenj 2003-08-26
  • 打赏
  • 举报
回复
在主函数中要为s 分配内存。。。。。

char *s=new char[10];
应该就可以了。
oopig 2003-08-26
  • 打赏
  • 举报
回复
esupermary(马立)的程序有问题:
delete s;//应该是delete[] s;
jzlzk 2003-08-26
  • 打赏
  • 举报
回复
多谢楼上各位朋友的指导。我明白了,有机会还要和大家多交流。
esupermary 2003-08-26
  • 打赏
  • 举报
回复
void mm()
{
char *s;
s = new char [256];
ss(s);
printf("%s\n",s);
delete s;
}
sharkhuang 2003-08-26
  • 打赏
  • 举报
回复
电信的指针问题!没有分配空间啊!
你以为是*p=“asdfsf”!那是初始化!
hillyee 2003-08-26
  • 打赏
  • 举报
回复
说的好。
buleapple 2003-08-26
  • 打赏
  • 举报
回复
内存分配的问题
keiven 2003-08-26
  • 打赏
  • 举报
回复
其实删与不删兜一样的,反正运行后就关闭了程序了。不过这样写是个很好的习惯。支持!!
lyff8neo 2003-08-26
  • 打赏
  • 举报
回复
典型的指针飞掉了啊
玄豹 2003-08-25
  • 打赏
  • 举报
回复
在mm()函数中为s分配内存

char *s=new char[10];
yellowwolf 2003-08-25
  • 打赏
  • 举报
回复
在主函数中为s分配内存
char *s=new char[10];
sevecol 2003-08-25
  • 打赏
  • 举报
回复
你需要为s分配内存
char *s=new char[10];

69,335

社区成员

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

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