c string.h

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

void *(memchr)(const void *s,int c,size_t n){
	const unsigned char uc = c;
	const unsigned char *su;
	for(su=( unsigned char *)s;0<n;++su,--n){
		if (*su == uc) 
			return ((void*)su);
		return (NULL);
	}
	
}

int (memcmp)(const void *s1,const void *s2,size_t n){
	const unsigned char *su1, *su2;
	for(su1=(unsigned char *)s1,su2=(unsigned char *)s2;0<n;++su1,++su2,--n)
		if (*su1 != *su2) {
			return ((*su1<*su2)?-1:+1);
		}else
			return (0);

}

void *(memcpy)(void * s1,const void *s2,size_t n){
	char *su1;
	const char *su2;
	for(su1=(char *)s1,su2=(char *)s2;0<n;++su1,++su2,--n)
		*su1=*su2;
	return (s1);
}


void *(memmov)(void *s1,const void *s2,size_t n){
	char *sc1;
	const char *sc2;
	sc1 = (char *)s1;
	sc2 = (char *)s2;
	if (sc2<sc1 && sc1<sc2+n) {
		for(sc1+=n,sc2+=n;0<n;--n)
			*--sc1 = *--sc2; 
	}else
		for(;0<n;--n)
			*sc1++ = *sc2++;
	return (s1);
}

void *(memset)(void *s,int c,size_t n){
	const unsigned char uc = c;
	unsigned char *su;
	for(su=(unsigned char *)s;0<n;++su,--n){
		*su = uc;
	}
	return (s);
}

char *(strncat)(char *s1,const char *s2,size_t n){
	char *s;
	for(s=s1;*s!='\0';s++)
		;
	for(;*s2!='\0' && n>0;--n)
		*s++ = *s2++;
	*s = '\0';
	return (s1);
}

int (strncmp)(const char *s1,const char *s2,size_t n){
	for(;n>0;++s1,++s2,--n){
		if (*s1 != *s2) {
			return ((*(unsigned char *)s1<*(unsigned char *)s2)?-1:+1);
		}else if (*s1 == '\0') {
			return (0);
		}
	}
	return (0);
}

char *(strncpy)(char *s1,const char *s2,size_t n){
	char *s;
	for(s=s1;n>0 && *s2!='\0';--n)
		*s++ = *s2++;
	for(;n>0;--n)
		*s++ = '\0';
	return (s1);
}

char *(strcat)(char *s1,const char *s2){
	char *s;
	for(s=s1;*s!='\0';++s)
		;
	for(;(*s=*s2)!='\0';++s,++s2)
		;
	return (s1);

}



int (strcmp)(const char *s1,const char *s2){
	for(;*s1==*s2;++s1,++s2)
		if (*s1 == '\0')
			return (0);
		return ((*(unsigned char *)s1<*(unsigned char *)s2)?-1:+1);
}



char *(strcpy)(char *s1,const char *s2){
	char *s=s1;
	for(s=s1;(*s++=*s2++)!='\0';)
		;
	return (s1);
}


size_t (strlen)(const char *s){
	const char *sc;
	for(sc=s;*sc!='\0';++sc)
		;
	return (sc - s);
}

char *(strchr)(const char *s,int c){
	const char ch = c;
	for(;*s!=ch;++s)
		if (*s == '\0') {
			return (NULL);
		}
	return ((char *)s);
}

size_t (strcspn)(const char *s1,const char *s2){
	const char *sc1,*sc2;
	for(sc1=s1;*sc1 != '\0';++sc1)
		for(sc2=s2;*sc2!='\0';++sc2)
			if (*sc1 == *sc2) {
				return (sc1-s1);
			}
	return (sc1- s1);
}

char *(strpbrk)(const char *s1,const char *s2){
	const char *sc1,*sc2;
	for(sc1=s1;*sc1 != '\0';++sc1)
		for(sc2=s2;*sc2!='\0';++sc2)
			if (*sc1 == *sc2) {
				return ((char *)sc1);
			}
			return (NULL);
}

size_t (strspn)(const char *s1,const char *s2){
	const char *sc1,*sc2;
	for(sc1=s1;*sc1 != '\0';++sc1)
		for(sc2=s2;*sc2!='\0';++sc2)
			if (*sc1 == '\0')
				return (sc1-s1);
			else if (*sc1 == *sc2) 
				break;
	return (sc1- s1);
}

char *(strrchr)(const char *s,int c){
	const char ch = c;
	const char *sc;
	for(sc=NULL;;++s){
		if(*s == ch)
			sc = s;
		if (*s == '\0') 
			return ((char *)sc);
	}
}


char *(strstr)(const char *s1,const char *s2){
	if (*s2 == '\0')
		return ((char *)s1);
	for(;(s1=strchr(s1,*s2))!=NULL;++s1){
		const char *sc1,*sc2;
		for(sc1=s1,sc2=s2;;)
			if (*++sc2 == '\0') 
				return ((char *)s1);
			else if (*++sc1!=*sc2)
				break;
	}
	return (NULL);
}

char *(strtok)(char *s1,const char *s2){
	char *sbegin,*send;
	static char *ssave = " ";
	sbegin = s1?s1:ssave;
	sbegin += strspn(sbegin,s2);
	if (*sbegin == '\0') {
		ssave =" ";
		return (NULL);
	}
	send =sbegin + strcspn(sbegin,s2);
	if (*send !='\0') {
		*send++ = '\0';
	}
	ssave = send;
	return (sbegin);
}


int main(){
	//if (memchr("sdfaf",'s',5)) {
	//	puts("ssss");
//	}
	int res;
	//res = memcmp("sss","asdf",4);
	//printf("%d\n",res);
	char *src="asdasfaf";
	char *src2="wwf";
	char dest[10]={0};
	//memcpy(dest,src,6);
	//memset(dest,97,9);
	//strncat(dest,src,4);
//	puts(dest);
	//res = strncmp(src,src2,4);
	//printf("%d\n",res);
	puts(src);
	puts(src2);
//	strncpy(dest,src,4);
	//strcat(dest,src);
	res = strcmp(src,src2);
	printf("%d\n",res);
	strcpy(dest,src2);
	puts(dest);
	res = strlen(dest);
	res = strcspn(src,src2);
	printf("%d\n",res);
	char str[]="llll,,sf,fgeg.geget;sdfasgadfafda,";
	char *pc;
	pc = strtok(str,",.;");
	while (pc!=NULL) {
		
		puts(pc);
		pc = strtok(NULL,",.;");
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值