字符串函数

1.求字符串长度

#include <assert.h>
size_t mystrlen(const char * dest){
	assert(dest! = NULL);//断言
	size_t len = 0;
	while(*dest ++ != '\0'){//循环增加
		len ++;
	}
	return len;
}

2.字符拷贝函数

#include <assert.h>
char *mystrcpy(char* dest,const char *src){
	assert(dest != NULL && src != NULL);
	char *pdest = dest;//记录首地址
	while((*dest++ = *src++)!='\0');//循环拷贝
	return pdest;
}

3.按拷贝n个字符函数

#include <assert.h>
char *mystrncpy(char *dest,cosnt char *src,size_t n){
	assert(dest != NULL && src != NULL);
	char *pdest = dest;
	while(n-->0&&(*dest++ = *src++)!='\0');//附加n--
	return pdest;
}

4.字符追加函数

#include <assert.h>
char *mystrcat(char *dest,const char *src){
	assert(dest != NULL&&src != NULL);
	char *pdest = dest;
	while(*dest++ != '\0');//将dest循环到最后一个字符
	dest --;
	while((*dest++ = *src++)!='\0');
	*dest = '\0';
	return pdest;
}

5.追加n个字符

#include <assert.h>
char *mystcncat(char *dest,const char *src,size_t n){
	assert(dest != NULL&&src != NULL);
	char *pest = dest;
	while(*dest++ != '\0');
	dest--;
	while(n-->0&&(*dest++ = *src++)!='\0');
	*dest = '\0';
	return pdest;
}

6.字符比对函数

#include <assert.h>
int mystrcmp(const char *dest,const char *src){
	assert(dest != NULL&&src != NULL);
	while(*dest!='\0'&&*src!='\0'&&*dest==*src){
		dest++;
		src++;
	}
	return *dest-*src;
}

7.比对两个字符串前n个字符

#include <assert.h>
int mystrncmp(const char *dest,const char *src,size_t n){
	assert(dest != NULL&&src != NULL);
	while(--n>0*dest!='\0'&&*src!='\0'&&*dest==*src){
		dest++;
		src++;
	}
	return *dest-*src;
}

8.万能追加函数

#include <assert.h>
void *mymemcpy(void *dest,const void *src,size_t n){
	assert(dest != NULL&&src != NULL);	
	char *pdest = (char *)dest;
	char *psrc = (src *)src;//转化为字符串
	while(n-->0){
		*psrc++ = *pdest++;
	}
	return dest;
}

9.字符串逆序

void reverge(char *s){
	assert(s != NULL);
	size_t len = strlen(s);
	for(int i=0;i<len/2;i++){
		char R = s[i];
		s[i] = s[len-i-1];
		s[len-1-i] = s;
	}
}

10.字符数字转化为整数

	int atoi(const char *ptr){
	assert(ptr != NULL);
	int num = 0;
	int flag = 1;
	if(*ptr == '-'){
		++ptr;
		flag = -1;
	}else if(*ptr == '+'){
		++ptr;
	}
	while(*ptr != '\0'){
		if(*ptr >= '0' && *ptr <= '9'){
			num = num * 10 + (*ptr - '0');
		}else{
			break;
		}
		++ptr;
	}
	return flag * num;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值