veer786 发表于 2013-10-17 22:20:23

大神帮忙看一下这个字符串复制的程序

#include<stdio.h>
void string_copy(char from[],char to[]);
void string_copy_pointer(char *from,char *to);
int main()
{
char a[] = "I love programing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
char b[] = "I don't love programing!!!";
printf("复制之前a:%s\n",a);
printf("复制之前b:%s\n",b);
string_copy(a,b);
printf("复制之后a:%s\n",a);
printf("复制之后b:%s\n",b);
return 0;
}
void string_copy(char from[],char to[])
{
int i= 0;
while(from != '\0')
{
to = from;
i++;
}
to = '\0';
}
void string_copy_pointer(char *from,char *to)
{
int i = 0;
while(*(from+i) != '\0')
{
*(to + i) = *(from +i);
i++;
}
*(to+i) = '\0';
}
为什么复制之后字符串啊的值成了:!!!!!!!!!
而不是先前的I love programing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";

风之残月 发表于 2013-11-9 18:57:48

void string_copy(char from[],char to[])
{
        int i = 0;
        int j = strlen(to);
        while(from != '\0')
        {
                to = from;
                i++;
                j++;
        }
        to = '\0';
}

复制的话应该将a接在b的末尾

jaqi 发表于 2022-8-4 23:44:18

char b[] 和char a[] 长度不同,把a[]复制给b[]相当于对b进行了越界写入
页: [1]
查看完整版本: 大神帮忙看一下这个字符串复制的程序