求教: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 展开
#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 展开
1个回答
展开全部
段错误,肯定是非法使用指针。检查你的指针是不是越界了吧。
程序很乱,刚看清楚,b指针指向的字符串是const类型,是不能被修改的,所以你的copy函数是错误的!
程序很乱,刚看清楚,b指针指向的字符串是const类型,是不能被修改的,所以你的copy函数是错误的!
更多追问追答
追问
我在源程序中定义了两个字符串
char *a="I am a teacher.";
char *b="you are a student.";
之后在copy()中传递字符串首地址,然后想实现字符串复制,这里面没有复杂的指针应用啊
追答
是啊,你却修改了const类型的字符串了,所以出现了段错误。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询