求教:gcc编译完的程序,运行时候提示段错误,下面有问题补充。

这是源程序:实现字符串复制。#include<stdio.h>main(){voidcopy(charfr[],charto[]);char*a="Iamateacher... 这是源程序:实现字符串复制。
#include<stdio.h>
main()
{void copy(char fr[],char to[]);
char *a="I am a teacher.";
char *b="you are a student.";
printf("\nstring a=%s \nstring b=%s \n",a,b);
printf("copy string a to string b: \n");
copy(a,b);
printf("\n string a=%s\n string b=%s\n",a,b);
}
void copy(char fr[],char to[])
{for(;(*to++=*fr++)!=0;);
}
下面是用gdb,单步运行的结果,老是出现”段错误“,我没有看出来程序本身有什么问题啊。
copy (fr=0x8048550 "I am a teacher.", to=0x8048560 "you are a student.")
at string.c:12
12 {for(;(*to++=*fr++)!=0;);
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x0804845a in copy (fr=0x8048550 "I am a teacher.",
to=0x8048560 "you are a student.") at string.c:12
12 {for(;(*to++=*fr++)!=0;);
(gdb) s
展开
 我来答
小兆86
2014-11-02 · TA获得超过802个赞
知道小有建树答主
回答量:990
采纳率:25%
帮助的人:871万
展开全部
段错误,肯定是非法使用指针。检查你的指针是不是越界了吧。
程序很乱,刚看清楚,b指针指向的字符串是const类型,是不能被修改的,所以你的copy函数是错误的!
更多追问追答
追问
我在源程序中定义了两个字符串
char *a="I am a teacher.";
char *b="you are a student.";
之后在copy()中传递字符串首地址,然后想实现字符串复制,这里面没有复杂的指针应用啊
追答
是啊,你却修改了const类型的字符串了,所以出现了段错误。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式