ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

不受结束标识符限制的字符串函数

2021-05-21 12:52:29  阅读:146  来源: 互联网

标签:const 函数 dest ret char num 字符串 标识符


5.strncpy(arr1,arr2,4)把arr2前四个元素拷贝到arr1,长度不够拷贝个数,在拷贝元素后面加0,直到够拷贝个数为止

char* my_strncpy(char* dest, const char* src, int num)
//{
//	char* ret = dest;
//	while (num&&(*dest++=*src++))
//		{
//			num--;
//		}
//	while (num)
//	{
//		*dest = '\0';
//		num--;
//	}
//	return ret;
//	}
//int main()
//{
//	char arr1[] = "abcdefg";
//	char arr2[] = "hello zyx";
//	char*ret=my_strncpy(arr1, arr2, 6);
//	printf("%s", ret);
//}

6.char* my_strncat(char* dest,const char* src, int num)把源头的n个字符追加到dest字符串中,当追加个数大于源头元素个数时追加‘\0’

char* my_strncat(char* dest,const char* src, int num)
//{
//	char* ret = dest;
//	while (*dest)
//	{
//		dest++;
//	}
//	while (num && (*dest++ = *src++))
//	{
//		num--;
//		if (num==0)
//		{
//			return ret;
//		}
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[40] = "abcdef";
//	char arr2[] = "hello world";
//	printf("%s",my_strncat(arr1, arr2, 18));
//    return 0;
//}

这是模拟实现,首先等目的字符串到了结束标志,再给后面追加源头字符串追加n个

7.int strncmp(const char*str1,const str2,unsigned int num);字符串比较,比较num对返回结果。

8.strstr 找子字符串,const char * strstr ( const char * str1, const char * str2 );

      取字符串1里面查找字符串2,假如有返回字符串中字符串2的首地址,否则返回空指针

char* my_strstr(const char* str1, const char* str2)
{
	const char* p1 = str1;
	if (*str2 =='\0')
	{
		return (char*)str1;
	}
	while (*p1)
	{
		const char* s1 = p1;
        const char* s2 = str2;
		while ((*s1 == *s2)&&(*s2)&&*(s1))
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return (char*)p1;
		}
		p1++;
	}
	return NULL;
}
int main()
{
	const char* p1 = "abcdefbcdef";
	const char* p2 = "bcd";
	char *ret= my_strstr(p1, p2);
	if (ret == NULL)
		printf("不是子串\n");
	else
		printf("%s", ret);
	return 0;
}

这个函数实现先把目的地字符串存起来,然后再用const修饰两个字符串,存p1,源头字符串,好处就是改变p1不好会改变源头字符串,返回的都是当时的值,让电脑一直几下现在比较的位置。

标签:const,函数,dest,ret,char,num,字符串,标识符
来源: https://blog.51cto.com/u_15167093/2800858

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有