【C语言】字符串的拷贝

博客介绍了C语言中访问数组元素的几种方法,包括使用数组下标访问(推荐)、指针解引用访问数组(不太推荐)、利用指针操作移动指针访问数组元素(非常重要)以及一行代码实现(不建议使用),并给出了执行结果。

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

(一)第一种方法:使用数组下标访问(推荐)

#include<stdio.h>

//第一种方法:使用数组下标访问
void Copy1(char*des,char*src)//des是目标,src是源字符串
{
	int i;
	for(i=0;src[i]!='\0';i++)//当src[i]出现'\0'时,代表字符串遍历结束
	{
		des[i]=src[i];//给des[i]赋值
	}
	des[i]='\0';//给复制好的des[i]的结尾加上'\0',代表字符串的结束
}
int main()
{
	char arr[10]="abcdefg";
	char brr[10];
	Copy1(brr,arr);//调用函数1
	printf("brr是%s",brr);//输出复制好的字符串数组brr
	printf("\n");
	return 0;
}

执行结果在这里插入图片描述

(二)使用指针解引用访问数组的方式(不太推荐)

#include<stdio.h>

//第一种方法:使用指针解引用访问(原理:利用p[i]等价于*(p+i))
void Copy2(char*des,char*src)//des是目标,src是源字符串
{
	int i;
	for (i = 0; *(src+i)!='\0'; i++)//当src出现'\0'时,代表字符串遍历结束
	{
		*(des+i)=*(src+i);//给des赋值
	}
	*(des+i)='\0';//给复制好的des的结尾加上'\0',代表字符串的结束
}
int main()
{
	char arr[10]="abcdefg";
	char brr[10];
	Copy2(brr,arr);//调用函数2
	printf("brr是%s",brr);//输出复制好的字符串数组brr
	printf("\n");
	return 0;
}

执行结果
在这里插入图片描述

(三)利用指针操作,移动指针访问数组元素(非常非常重要)

#include<stdio.h>

void Copy3(char* des, char* src)//利用指针操作,指针自行移动,*******非常非常非常重要********。
{
	/*while (*src != '\0')
	{
		*des = *src;
		src++;
		des++;
	}*/
	for (; *src != '\0'; src++, des++)//与上面注释代码二选一即可
	{
		*des = *src;
	}
	*des = '\0';
} 

int main()
{
	char arr[10]="abcdefg";
	char brr[10];
	Copy3(brr,arr);//调用函数3
	printf("brr是%s",brr);//输出复制好的字符串数组brr
	printf("\n");
	return 0;
}

执行结果
在这里插入图片描述

(四)一行代码(不建议使用)

#include<stdio.h>

void Copy4(char* des, char* src)
{
	while (*des++ = *src++);
	//经典代码,不建议使用
	//int i = 10; int j = i++;
	//int i=10;if(i)
}

int main()
{
	char arr[10]="abcdefg";
	char brr[10];
	Copy4(brr,arr);//调用函数4
	printf("brr是%s",brr);//输出复制好的字符串数组brr
	printf("\n");
	return 0;
}

运行结果
在这里插入图片描述
—————————————————————————————
Day4 2020-12-17 星期四 晴

时而躁动如火,时而温柔似水,时而安静得像活在象牙塔里,时而混迹于人海中亦游刃有余。时而哭得撕心裂肺,时而笑得花枝乱颤。时而自命不凡,时而妄自菲薄。这是得了什么病呢?病名为爱。在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值