自定义常用的字符串函数(strlen,strcpy,strcmp,strcat)

1、写一个函数将字符串倒叙输出

复制代码
#include <stdio.h>
#include <string.h>

void func(char *src)
{
    int len = strlen(src);         // 获取字符串长度
    for(int i = 0; i < (len / 2); i++)
    {
        char tmp = src[i]; // 交换第i个和第len-1-i个字符
        src[i] = src[len - 1 - i];
        src[len - 1 - i] = tmp;
    }
    printf("%s\n", src);
}

int main(int argc, char const *argv[])
{
    char src[] = "abcde"; // 用字符数组存储,可修改
    func(src);            // 输出:edcba
    return 0;
}

2、写一段代码,判断当前是大端序还是小端序

复制代码
#include <stdio.h>

int main()
{
	int a = 0x12345678;
	
	char *p=NULL;
	p=(char *)&a;
	
	printf("%#x\n",*p);
	
}

3、自己写的strlen()函数

复制代码
#include <stdio.h>

unsigned long My_Strlen(char *s)
{
	if(s == NULL)
		return 0;
		
	unsigned long count = 0;
	while(*s != '\0')
	{
		s++;
		count++;
	}
	return count;
}

int main()
{
	char str[]={"wertyuiokjhdfghjjb vifnv"};
	
	unsigned long len=My_Strlen(str);
	
	printf("该字符串长度为:%ld\n",len);
	
}

4、自己写的strcpy()函数

复制代码
#include <stdio.h>

void My_Strcpy(char *a,char *b)
{
	if((a == NULL)|| (b == NULL))
		return ;
	
	while(*b != '\0')
	{
		*a=*b;
		a++;
		b++;
	}
	*a='\0';
}

int main()
{
	char stra[]={"hello"};
	char strb[]={"world"};
	printf("stra:%s\n",stra);
	printf("strb:%s\n",strb);
	
	My_Strcpy(stra,strb);
	
	printf("stra复制到strb后:%s\n",stra);
	
}

5、自己写的strcat()函数

复制代码
#include <stdio.h>

void My_Strcat(char *a,char *b)
{
	if((a == NULL)|| (b == NULL))
		return ;
	
	while(*a != '\0')
	{
		a++;
	}
	while(*b!='\0')
	{
		*a=*b;
		a++;
		b++;
	}
	*a='\0';
}

int main()
{
	char stra[]={"hello"};
	char strb[]={"world"};
	printf("stra:%s\n",stra);
	printf("strb:%s\n",strb);
	
	My_Strcat(stra,strb);

	printf("strb追加复制到stra后:%s\n",stra);
	
}

6、自己写的strcmp()函数

复制代码
#include <stdio.h>

int My_Strcmp(char *a,char *b)
{
	if((a == NULL)|| (b == NULL))
		return -99;
	
	while((*a != '\0')&& (*b!='\0') && (*a == *b))
	{
		a++;
		b++;
	}
	return *a-*b;
}

int main()
{
	char stra[]={"hello"};
	char strb[]={"hellp"};
	printf("stra:%s\n",stra);
	printf("strb:%s\n",strb);
	
	int x=My_Strcmp(stra,strb);

	printf("stra与strb进行strcmp后=%d\n",x);
	
}
相关推荐
那个村的李富贵11 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
power 雀儿11 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
琹箐11 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia112 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了12 小时前
数据结构之树(Java实现)
java·算法
算法备案代理12 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.12 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
野犬寒鸦13 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总13 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
rainbow688914 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法