实现字符串的拷贝

题目:

实现字符串的拷贝,将字符串b拷贝给字符串a。

例如:

字符串a:hello world

字符串b:nihao

拷贝后:

字符串a:nihao

字符串b:nihao

解题思路:

解决本题需要解决两个问题,如何拷贝和拷贝的结束条件。

把字符串b拷贝给字符串a,想到将字符串a和字符串b同时进行遍历,然后逐个赋值。关于结束条件的判断主要依据的是两个字符串长度的大小关系,相等时只要一个遍历结束另一个也一定结束,并且拷贝完成。当两个字符串长度不等时,那么就要两个字符串都遍历完成才证明拷贝结束。综合来看,需要两个字符串都遍历完成了那么拷贝结束。

程序代码:

#include <stdio.h>
char * cpy(char *,char *);
int main(int argc, char *argv[])
{ 
    char a[30]={"hello"};
    char b[30];
    printf("请输入字符串a:");
    gets(a);
    printf("请输入字符串b:");
    gets(b);
    char *ret = cpy(a,b);//执行拷贝
    puts("拷贝后:");
    printf("a=%s\nb=%s\n",ret,b);//拷贝函数返回的是拷贝后的a首地址,所以可以用ret打印a
    return 0;
} 
char * cpy(char *a,char *b){

    for(int i = 0; a[i] || b[i]; i++)
//当两个字符串都到'\0'证明拷贝完成,否则可能拷贝不全或者原串字符没有被覆盖完
    {
     a[i] = b[i];//逐个赋值
    }
    return a;
}

运行结果:

请输入字符串a:hello world
请输入字符串b:nihao
拷贝后:
a=nihao
b=nihao
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值