c语言,两个字符数组,利用一个函数将一个内容复制并替换另一个的内容 5

运行正确:#include<stdio.h>intmain(){voidcopy_string(char*from,char*to);char*a="Iamateache... 运行正确:
#include <stdio.h>
int main()
{void copy_string(char *from, char *to);
char *a="I am a teacher.";
char b[]="you are a student.";
char *t=b;
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,t);
printf("\nstring a=%s\nstring b=%s\n",a,b);
return 0;
}

void copy_string(char *from, char *to)
{ for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
然而将第一个字符数组用数组保存,第二个用指针指向后就不能正确运行
不能运行的:
#include <stdio.h>
int main()
{void copy_string(char *from, char *to);
char *a="I am a teacher."//有改动
char b[]="you are a student."//有改动
char *t=b;//有改动
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,t);
printf("\nstring a=%s\nstring b=%s\n",a,b);
return 0;
}

void copy_string(char *from, char *to)
{ for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
改动后的程序发错了
改动后为以下:
#include <stdio.h>
int main()
{void copy_string(char *from, char *to);
char a[]="I am a teacher.";//有改动
char *b="you are a student.";//有改动
char *t=a;//有改动
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(t,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
return 0;
}

void copy_string(char *from, char *to)
{ for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
展开
 我来答
lifejackenYuan
2014-09-18 · 超过29用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:46.1万
展开全部

这是因为char* b = "……",中。 b是一个常量,不能对它指向的内存区域赋值。

类似下面的代码:

    char* p = "hello";
    p[0] = 'c';

是同样的错误。

更多追问追答
追问
你好,原提问发错了。已经更新了,麻烦再看看
你好,原提问发错了。已经更新了,麻烦再看看
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式