c语言strcopy例子,C语言习题选讲:7.15和10.7 strcopy( )的实现

本文介绍了如何在C语言中实现字符串复制函数scopy(),提供了两种不同的实现方式,分别是下标法和指针法,并讨论了如何在scopy()中处理从源字符串的指定位置开始复制的情况。此外,还提到了如何结合strlen()和strcopy()的功能,同时计算字符串长度并复制。这些基础知识对于理解和编写C语言程序至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串处理函数也是C语言考试的常见题。最常见的莫过于strlen( )和strcopy( )的实现。

为了区别于库函数strcopy ( ),我们把自己写的字符串复制函数取名为scopy ( )。

程序设计题:

编写函数scopy ( ),它的功能是:将字符串s2的内容复制给字符数组s1。(包括末尾的’\0’)。

请勿改动主函数main()中的任何内容,仅在函数scopy( )的花括号中填入你编写的若干语句。

#include”stdio.h”

void scopy (char *s1, char *s2)

{

}

void main()

{ char str1[20], str2[20]="China";

scopy(str1, str2);

printf("%s\n", str1);

}

解一(下标法):

void scopy (char *s1, char *s2)

{ int i;

for(i=0;s2[i];i++) s1[i]=s2[i];

s1[i]=0; //补末尾的’\0’

}

解二(指针法):

void scopy (char *s1, char *s2)

{

for( ; *s2 ; s1++, s2++) *s1=*s2;

*s1=0;

}

解二的while 写法:将for句改为:

while(*s2) *s1=*s2, s1++, s2++;

有些人喜欢把++写到*s1=*s2中,即while句写成

while(*s2) *s1++ = *s2++;

这个题目可以有些变化,比如10.7要求从s2的第m 个字符开始复制。这个很容易。

解一(下标法):

void scopy (char *s1, char *s2, int m)

{ int i;

for(i=m;s2[i];i++) s1[i-m]=s2[i];

s1[i-m]=0; //补末尾的’\0’

}

解二(指针法):

void scopy (char *s1, char *s2, int m)

{

for(s2+=m ; *s2 ; s1++, s2++) *s1=*s2;

*s1=0;

}

使用while 的写法:将for句改为:

s2+=m; while(*s2) *s1++ =

*s2++;

当然,也可以将strlen( )和strcopy( )合并,即复制的同时,计数字符串的长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值