常用的字符串处理函数(memcpy+memmove+memset+memcpy+memchr+strcpy/strncpy+strcat/strncat+strcmp/strncmp+strdup)

本文详细介绍了C语言中常用的字符串处理函数,包括memcpy、memmove、memset、memcmp、memchr、strcpy、strncpy、strcat、strncat、strcmp、strncmp以及strdup的功能、用法和示例代码,帮助读者理解和掌握这些基本操作。
摘要由CSDN通过智能技术生成

memcpy:
从一个字符串复制一个字节到另外一个字符串(The memcpy() function copies n bytes from memory area src to memor area dest. ),并且两个字符串不能有重叠区域。
头文件包含:#include <string.h>
memcpy()函数原型:
void *memcpy(void *dest, const void *src, size_t n);
dest指向的字符串表示目标字符串,src指向的字符串表示原字符串,n表示要复制的字节数。
返回值:复制成功返回目标字符串(dest指向的字符串)的指针。
自己编写程序实现memcpy函数:
第一种方式利用assert宏:

#include <stdio.h>
#include <assert.h>
void *memcpy2(void *memTo, const void *memFrom, size_t size)
{
   
	//ASSERT()一般被称为断言,它是一个调试程序常用的宏。
	//它定义在<assert.h>头文件中,通常用于判断程序中是否出现了非法的数据,
	//在程序运行时它计算括号内的表达式的值,如果表达式的值是false(0),程序报告错误,终止运行。
	assert((memTo != NULL) && (memFrom != NULL)); //memTo和memFrom必须有效
	char *tempFrom = (char *)memFrom;             //保存memFrom首地址
	char *tempTo = (char *)memTo;
   
    while(size -- > 0)                         //循环size次,复制memFrom的值到memTo中
		*tempTo++ = *tempFrom++ ; 
    return memTo;
}
int main()
{
   
    char strSrc[] = "rrrr";          //将被复制的字符数组
    char strDest[20];               //目的字符数组  
    memcpy2(strDest, strSrc, 4);    //复制strSrc的前4个字符到strDest中
    strDest[4] = '\0';                //把strDest的第5个元素赋为结束符'\0'
    printf("strDest: %s\n", strDest);
    return 0;
}

第二种方式不用assert宏:

#include <stdio.h>

void *memcpy2(void *memTo, const void *memFrom, size_t size)
{
   
	if((memTo != NULL) && (memFrom != NULL))
	{
   
		char *tempFrom = (char *)memFrom;             //保存memFrom首地址
		char *tempTo = (char *)memTo;
		while(size!=0)                           //循环size次&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值