鱼C论坛

 找回密码
 立即注册
查看: 3347|回复: 2

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

[复制链接]
发表于 2013-10-17 22:20:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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[i] != '\0')
{
  to[i] = from[i];
  i++;
}
to[i] = '\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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";

123.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-9 18:57:48 | 显示全部楼层
void string_copy(char from[],char to[])
{
        int i = 0;
        int j = strlen(to);
        while(from[i] != '\0')
        {
                to[j] = from[i];
                i++;
                j++;
        }
        to[j] = '\0';
}

复制的话应该将a接在b的末尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-4 23:44:18 | 显示全部楼层
char b[] 和char a[] 长度不同,把a[]复制给b[]相当于对b进行了越界写入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 10:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表