首页 > 其他分享 >20241011-1 字符串函数自写

20241011-1 字符串函数自写

时间:2024-10-11 19:46:25浏览次数:20  
标签:自写 str3 str1 strcat str4 ret3 printf 字符串 20241011

#include <stdio.h>
#include <string.h>

unsigned int mystrlen(char *str)
{
	unsigned int count = 0;
	while('\0' !=  *(str++))
	{
		count++;
	}

	return count;
}

/*str1:目的字符串  str2:源字符串 */
void mystrcpy(char *str1, char *str2)
{
	char ch = ' ';
	while('\0' != ch)
	{
		ch = *(str2++);
		*(str1++) = ch;	
	}
	*(str1++) = '\0';
}

/*
str1>str2 ret > 0
str1<str2 ret < 0
str1=str2 ret = 0
*/
int  mystrcmp(char *str1, char *str2)
{
	char ret1 = 0;
	char ret2 = 0;
	while(1)
	{
		ret1 = *(str1++);
		ret2 = *(str2++);
		printf("ret1:%c ret2:%c\n",ret1,ret2);

		if('\0' == ret1 || '\0' == ret2)
		{
			return ret1-ret2;
		}

		if(ret1 != ret2)
		{
			return ret1-ret2;
		}
	}
	//return 0;
	
}

void mystrcat(char *str1, char *str2)
{
	while('\0' != *str1)
	{
		printf("str1:%c\n",*str1);
		str1++;
	}

	while('\0' != *str2)
	{
		printf("str2:%c\n",*str2);
		*(str1++) = *(str2++);
	}

	*(str1++) = '\0';
}

int main(void)
{
	printf("========strlen()============\n");
	printf("请输入数据:");
	
	char str1[20] = "";
	scanf(" %s",str1);
	printf("strlen(str1):%zu\n",strlen(str1));
	printf("mystrlen(str1):%u\n",mystrlen(str1));

	printf("========strcpy()===========\n");

	char str2_1[20] = "hello";
	char str2_2[20] = "world";
	char str2_3[20] = "";

	strcpy(str2_3,str2_1);
	printf("strcpy:%s\n",str2_3);
	mystrcpy(str2_3,str2_2);
	printf("mystrcpy:%s\n",str2_3);

	printf("=========strcmp=============\n");

	char str3_1[20] = "abd";
	char str3_2[20] = "abe";
	char ret3_1 = strcmp(str3_1,str3_2);
	printf("strcmp==>ret3_1:%d\n",ret3_1);
	if(ret3_1 > 0)
	{
		printf("%s大于%s\n",str3_1,str3_2);
	}
	else if(ret3_1 < 0)
	{
		printf("%s小于%s\n",str3_1,str3_2);
	}
	else
	{
		printf("%s等于%s\n",str3_1,str3_2);
	}
	
	char ret3_2 = mystrcmp(str3_1,str3_2);
	printf("mystrcmp==>ret3_2:%d\n",ret3_2);
	if(ret3_2 > 0)
	{
		printf("%s大于%s\n",str3_1,str3_2);
	}
	else if(ret3_2 < 0)
	{
		printf("%s小于%s\n",str3_1,str3_2);
	}
	else
	{
		printf("%s等于%s\n",str3_1,str3_2);
	}

	printf("========strcat==============\n");\
	char str4_1[10] = "abc";
	char str4_2[10] = "def";
	strcat(str4_1,str4_2);
	printf("strcat==>str4_1:%s\n",str4_1);
	mystrcat(str4_1,str4_2);
	printf("strcat==>str4_1:%s\n",str4_1);
		
	return 0;
}

运行结果:

liang7212@Ubuntu1604:~/MyCodeProject/C/241011$ ./4.out 
========strlen()============
请输入数据:acxd
strlen(str1):4
mystrlen(str1):4
========strcpy()===========
strcpy:hello
mystrcpy:world
=========strcmp=============
strcmp==>ret3_1:-1
abd小于abe
ret1:a ret2:a
ret1:b ret2:b
ret1:d ret2:e
mystrcmp==>ret3_2:-1
abd小于abe
========strcat==============
strcat==>str4_1:abcdef
str1:a
str1:b
str1:c
str1:d
str1:e
str1:f
str2:d
str2:e
str2:f
strcat==>str4_1:abcdefdef

标签:自写,str3,str1,strcat,str4,ret3,printf,字符串,20241011
From: https://blog.csdn.net/qq_64376986/article/details/142830111

相关文章

  • resultmap返回字符串set集合
    在resultmap中写好数组实体层的set集合(不用list是因为要去重,要用list的话把set改为list,再下面的sql查询把DISTINCT去掉就可)这里的selectCategoryNumber对应图一中的selectCategoryNumberwhere语句中的recods_id对应图一的column的recods_id最后只要再定义的resultmap......
  • C++删除字符串中的所有空格与换行(任意字符)
    删除字符串中的所有空格与换行使用头文件中的remove函数,注意:std::remove不会改变容器的大小,它只是将元素移动到容器的末尾。因此,我们需要调用erase来实际从字符串中删除这些元素。使用std::remove算法,它重排元素,使得要删除的元素(在这里是空格和换行符)被放在序列的末尾,......
  • 20241011 大二上 数据结构与算法 堆
    1.堆排序堆排序是一种原地排序算法,即不需要额外的空间来存储数据,只需要在原数组上进行操作即可。堆排序是一种不稳定排序算法,即可能会改变相同元素的相对顺序。例如,如果数组中有两个相同的元素,它们可能会在排序过程中被交换,导致它们的顺序发生变化。堆排序的时间复杂度为O(nlog......
  • Leetcode 839. 相似字符串组【附并查集模板】
    1.题目基本信息1.1.题目描述如果交换字符串X中的两个不同位置的字母,使得它和字符串Y相等,那么称X和Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,”tars”和“rats”是相似的(交换0与2的位置);“rats”和“arts”也是相似的,但是“s......
  • 多层嵌套json字符串(jsonStr)写入redis
    1、连接redisJedisjedis=newJedis("localhost",6379);2、将字符串转为json格式JSONObjectjs=JSONObject.fromObject(jsonStr);3、对json格式进行解析4、将json写入redispublicstaticvoidRedisSet(JSONObjectjs,Jedisjs01){//获取json中的所有key......