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

20241011-1 字符串函数自写

时间:2024-10-11 19:46:25浏览次数:3  
标签:自写 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

相关文章

  • 获取字符串的在html页面上的宽度并且若文字过长则缩小字体填充
    某个页面有这样一个需求:一个固定宽度的div,若文字过长,则缩小字体填充。看到同事采用的是用php的GD库的imagettfbbox函数来计算文字的宽度。imagettfbbox(float $size,float $angle,string $font_filename,string $string,array $options=[]): array|false 取得使用Tru......
  • 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......
  • 20241011 模拟赛总结
    得分:100+100+0+2=202感觉还行了。T1单调队列优化DP,花了将近45min,最开始写了一个假的DP花了太多时间了。T2原本像写一个乱搞,没想到就直接过了?对于每一行的第一个位置,先求出以这个点为左上顶点的答案,然后向右推,动态维护这个正方形即可,赌的就是相邻格子的答案差不会太大,所......
  • 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......
  • 洛谷题单指南-字符串-P2580 于是他错误的点名开始了
    原题链接:https://www.luogu.com.cn/problem/P2580题意解读:给n个字符串,再依次处理m个字符串,对于每个字符串,如果在前面n个字符串中输出OK,如果不在n个字符串中输出WRONG,如果在n个字符串中且不止一次查询过输出REPEAT。解题思路:1、set/map方法很简单直接,用set存下前n个字符串,map......
  • 算法训练营第十天|232.用栈实现队列 ,225. 用队列实现栈,20. 有效的括号,1047. 删除字符
    前置知识栈和队列都是以deque为缺省底部结构,实际上可以自己指定vector,deque,list都可以栈和队列都被归类为containeradapter(容器适配器)使用栈实现队列的操作:push(x)--将一个元素放入队列的尾部。pop()--从队列首部移除元素。peek()--返回队列首部的元素。empty()......
  • 洛谷题单指南-字符串-P1481 魔族密码
    原题链接:https://www.luogu.com.cn/problem/P1481题意解读:在n个字符串中找到最长的词链长度,定义字符串a、b、c可以形成词链,即a是b的前缀、b是c的前缀。解题思路:1、Trie树定义Trie树,也称前缀树、字典树,核心思想是将字符串拆解为单个字符,每个字符是树的一条边,节点是字符添加到树......