摘自老潭的C程序设计略加改动
#include<stdio.h>
int main()
{
void copy_string (char*from,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 b\n");
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
return ;
}
void copy_string(char *from,char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
程序的运行结果:只能输出原来的string a
和string b ; copy_srting 却起不到任何效果! 为何?
是不是二者都是只读的 ?
帮忙解释下 谢谢 ! 本人够菜! 不过还是请帮忙解释下 !
不管你是不是高手
谢谢!
这个问题已经不是第一次问了!
char *a="I am a teacher.";
char *b="you are a student.";
a,b 是否可写,没有一个统一的标准, 在不同的编译器下是不一样的(gcc,vc 试一下
).
输出成asm 看一下就知道了.
也就是说,你可以修改编译器(当然没必要这样做)使a,b可写.
若在linux+gcc 下,你也可这样改来测试:
#include<stdio.h>
void copy_string (char*from,char *to);
int main()
{
char *a="I am a teacher.";
char *b="you are a student.";
char buffer[256];
printf("\nstring a=%s\nstring b=%s\n",a,b);
printf("copy string a to buffer\n";
copy_string(a,buffer);
printf("\nstring a=%s\nstring buffer=%s\n",a,buffer);
printf("copy string a to b\n";
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
return ;
}
void copy_string(char *from,char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}