注册 登录
编程论坛 C语言论坛

copy_string函数没执行 怎么回事 有大佬吗

domore 发布于 2019-07-25 04:38, 1817 次点击
#include<stdio.h>
int main()
    {
    void copy_string(char *from,char *to);
    char *a="i am a student";
    char *b="you are a student";
    printf("string a:%s\nstring b:%s\n",a,b);
    printf("\ncopy string a to b:\n");
    copy_string(a,b);
    printf("string a:%s\nstring b:%s\n",a,b);
    return 0;
}


void copy_string(char *from,char *to)
    {
    while(*from!='\0')
        {
        *to=*from;
        from++;
        to++;
        }
    *to='\0';
    }
只有本站会员才能查看附件,请 登录
4 回复
#2
wufuzhang2019-07-25 09:08
回复 楼主 domore
编译的时候是有警告的,你视而不见。

问题根源:执行copy_string完函数后,指针a和b都改变了,
不再指向字符串的首地址,当然无输出。
我将你的代码改进了一下就可以了

程序代码:

#include<stdio.h>
int main()
{
    void copy_string(char *from, char *to);
    char a[20] = "i am a student";
    char b[30] = "you are a student";
    char *pa = a;
    char *pb = b;
    printf("string a:%s\nstring b:%s\n", a, b);
    printf("\ncopy string a to b:\n");
    copy_string(pa, pb);
    printf("string a:%s\nstring b:%s\n", a, b);
    return 0;
}

void copy_string(char *from, char *to)
{
    while(*from!='\0')
   {
        *to=*from;
        from++;
        to++;
   }
    *to='\0';
}

#3
wufuzhang2019-07-25 09:17
回复 楼主 domore
代码可以精简:



程序代码:

#include <stdio.h>

int main(void)
{
    char a[20] = "i am a student";
    char b[30] = "you are a student" ;
    char *pa = a;
    char *pb = b;
    while (*pb++ = *pa++);
    pa = a; pb = b;
    printf("a:%s\nb:%s\n", pa, pb);
    return 0;
}
#4
domore2019-07-27 06:43
回复 3楼 wufuzhang
谢了兄弟
#5
Mr_doge2019-07-27 15:35
修改字符串常量属于未定义行为,不要对编译器警告视而不见
1