C语言中的常见字符串操作函数

本文详细介绍了C语言中常见的字符串操作函数,包括strcat、strncat、memchr、memcpy、memmove、memcmp、memset、strchr、strcpy、strnchr、strstr、strcmp和strncmp。每个函数都阐述了其功能、原型以及模拟实现,帮助读者理解这些函数的使用和原理。
摘要由CSDN通过智能技术生成

以下函数的头文件位于#include<string.h>

1.strcat函数:

函数原型:char * strcat ( char * destination, const char * source );

该函数是字符串拼接函数。将源字符串拼接至目标字符串的结尾处。要覆盖目标字符串中的'\0'。

source和destination的空间不能重叠,而且destination的空间一定要能够容纳destination和source,否则在进行指针++的时候就会出错。

模拟实现:

char* mystrcat(char* dest,const char* src)
{
	char* p = dest;
	assert(dest && src);
	//找dest的结尾处,最终指向'\0'
	while(*dest != '\0')
		dest++;
	while(*src != '\0')
		*dest++ = *src++;
	*dest = '\0';
	return p;
}

int main()
{
	//目标串中的空间一定要开够,否则指针++会出错
	char str1[30] = "hello"; 
	char* str2 = " world";
	char* ret = mystrcat(str1,str2);
	printf("%s\n",ret);
	return 0;
}

2.strncat函数:

函数原型:char * strncat ( char * destination, const char * source, size_t num );

该函数实现规定长度的字符串的拼接。和strcat不同之处在于,需要加一个循环,循环次数为len次。

//strncat
char* mystrncat(char* dest,const char* src,int len)
{
	char* p = dest;
	assert(dest);
	assert(src);
	while(*dest)
		dest++;
	while(len--)
	{

		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';
	return p;
}

int main()
{
	char str1[30] = "hello ";
	char str2[] = "the beautiful";
	char* ret = mystrncat(str1,str2,3);
	printf("%s\n",ret);
	return 0;
}

3.memchar函数:

函数原型:

const void * memchr ( const void * ptr, int value, size_t num );
      void * memchr (       void * ptr, int value, size_t num );

该函数是规定的范围内查找一个值,返回这个值的位置。

模拟实现:

//memchr
void* mymemchr(const void* str,int value,size_t n)
{
	char* p = (char*)str;
	assert(str);
	while(n--)
	{
		if((char)value == *p)
			return p;
		else
			++p;
	}
	return NULL;
}
int main()
{
	char* p;
	char str1[] = "maybe is you!";
	p = mymemchr((void*)str1,'i',sizeof(str1));
	printf("value is %c, position is %d\n",*p,p-str1+1);
	return 0;
}

3.memcpy函数:

函数原型:

void * memcpy ( void * destination, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值