string.h中函数的简单实现和示例

这篇博客主要介绍了在C语言中`string.h`库的一些常见函数的简单实现,旨在帮助读者加深理解。作者提到,由于某种原因,`strtok`函数的示例并未完全实现其应有的功能。
摘要由CSDN通过智能技术生成

函数实现纯属复习c语言时为了加深印象的简单实现
如果有bug,可以告诉我改改

(strtok函数示例效果没有达到原函数效果,就没写了)

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

//计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
int myStrlen(char* str);
//把 str1 所指向的字符串和 str2 所指向的字符串进行比较
int myStrcmp(char *str1, char *str2);
//把 str1 和 str2 进行比较,最多比较前 n 个字节
int myStrncmp(char *str1, char *str2, int n);
//检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
int myStrcspn(char *str1, char *str2);
//检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
int myStrspn(char *str1, char *str2);
//根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。
int myStrxfrm(char *dest, char *src, int n);
//把 src 所指向的字符串复制到 dest,最多复制 n 个字符。
char *myStrncpy(char *dest, char *src, int n);
//在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。
char *myMemchr(char *str, int c, int n);
//复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
char *myMemset(char *str, int c, int n);
//把 src 所指向的字符串复制到 dest。
char *myStrcpy(char* dest,const char* src);
//从 src 复制 n 个字符到 dest。
char *myMemcpy(char *str1, const char *str2, int n);
//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
char *myStrcat(char *dest, char *src);
//另一个用于从 src 复制 n 个字符到 dest 的函数。
char *myMemmove(char *str1, char *str2, int n);
//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
char *myStrncat(char *dest, char *src, int n);
//在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
char *myStrchr(char *str, int c);
//在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。
char *myStrrchr(char *str, int c);
//在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。
char *myStrstr(char *haystack, char *needle);
//分解字符串 str 为一组字符串,delim 为分隔符。
char *myStrtok(char *s,const char *delim); 

void testMyStrlen();
void testMyMemchr();
void testMyStrcpy();
void testMyMemset();
void testMyMemcpy();
void testMyStrcat();
void testMyMemmove();
void testMyStrncat();
void testMyStrchr();
void testMyStrcmp();
void testMyStrncmp();
void testMyStrcoll();
void testMyStrncpy();
void testMyStrrchr();
void testMyStrcspn(); 
void testMyStrpbrk();
void testMyStrspn();
void testMyStrstr();
void testMyStrtok();
void testMyStrxfrm();

void showMenu();

int main(){
   
	int cmd=-1;
	do{
   
		showMenu();
		scanf("%d",&cmd);
		switch (cmd){
   
			case 1:testMyStrlen();break;
			case 2:testMyMemchr();break;
			case 3:testMyStrcpy();break;
			case 4:testMyMemset();break;
			case 5:testMyMemcpy();break;
			case 6:testMyStrcat();break;
			case 7:testMyMemmove();break;
			case 8:testMyStrncat();break;
			case 9:testMyStrchr();break;
			case 10:testMyStrcmp();break;
			case 11:testMyStrncmp();break;
			case 12:testMyStrcoll();break;
			case 13:testMyStrncpy();break;
			case 14:testMyStrrchr();break;
			case 15:testMyStrcspn();break;
			case 16:testMyStrpbrk();break;
			case 17:testMyStrspn();break;
			case 18:testMyStrstr();break;
			case 19:testMyStrtok();break;
			case 20:testMyStrxfrm();break;
			default:break;
		}
		
	}while(cmd!=0);
	 
	return 0;
}
char *myMemcpy(char *str1, char *str2, int n){
   
	for(int i=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值