【C语言】关于字符串函数的使用及模拟实现(1)

一、字符串追加

1.1 库函数srecat的使用

1.2 库函数strncat的使用

1.3 模拟实现库函数 strcat 及 strncat

由上可知,字符串追加的原理是找到所添加字符串的 \0 位置,再对其进行添加。

代码1、

代码2、


二、字符串查找

2.1 库函数strstr的使用

使用strstr函数可以快速的定位到所查找字符串的地址。

2.2 模拟实现库函数 strstr

复制代码
//模拟实现字符串查找
#include<stdio.h>
char* my_strstr(const char* a,const char* b){
	const char* a1 = a;  
	const char* b1 = b;  
	const char* p = a;    // 记录从字符串a开始查找的位置
	if(*b == '\0'){
		return (char*)a;
	}
	while(*p){
		a1 = p;
		b1 = b;  // 重置指向字符串b的指针
		while(*a1 && *b1 && (*a1 == *b1)){
			a1++;
			b1++;
		}
		if(*b1 == '\0'){ //表示已查完,返回开始查找的位置
			return (char*)p;
		}
	p++;
	}
	return NULL; //未查找到
}

int main(){
	char a[20] = "hongshaorou";
	char b[] = "shao";
	char * ret = my_strstr(a,b);
	if(ret == NULL){
		printf("没找到");
	}else{
		printf("找到了:%s\n",ret);	
	}
	return 0;
}

三、求字符串长度

3.1 库函数strlen的使用

记录 ' \0 ' 之前的字符数。

3.2 模拟实现库函数strlen

注意:在库函数中strlen的返回类型为suze_t(无符号整型),我们这里的返回类型为int型。

代码1

复制代码
#include<stdio.h>
int my_strlen(const char* a){
	int count = 0;
	while(*a){
		a++;
		count++;
	}
	return count;
}

int main(){
	char a[] = "hello";
	int len = my_strlen(a);
	printf("%d\n",len);
	
	return 0;
}

代码2

复制代码
#include<stdio.h>
int my_strlen(const char* a){
	const char* p = a;
	while(*a){
		a++;
	}
	return (int)(a-p);
}
int main(){
	char a[] = "hello";
	int len = my_strlen(a);
	printf("%d\n",len);
	return 0;
}
相关推荐
奋斗的阿狸_19861 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
2401_862880822 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
ACP广源盛139246256732 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
沐欣工作室_lvyiyi2 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院
C++ 老炮儿的技术栈2 小时前
static的作用
c语言·c++·人工智能·单片机·c
小小龙学IT4 小时前
Go 语言 cgo 与 C/C++ 互操作深度解析:从 fwlib 直连到工业数采网关实战系列
c语言·c++·golang
老王爱玩车6 小时前
动态内存管理
c语言·开发语言·学习·面试
Logic1016 小时前
C语言/数据结构数位DP题解:平滑排列数字统计——区间内相邻位差不超过K的数字个数
c语言·数据结构·动态规划·时间复杂度·数位dp·算法题·前导零处理
Zwawa6 小时前
把 AO 接回来:黑线和白底之间到底差了多少
c语言·单片机·嵌入式
C++ 老炮儿的技术栈7 小时前
char (*csConnectName)[256]; 和 char csConnectName [256] 有什么区别
java·c语言·开发语言·c++·人工智能·算法·c