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

以下函数的头文件位于#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, const void * source
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值