c语言编程实现strlen,C语言实现strlen,atoi, strcpy等函数

strlen的实现很简单:

如下:

int my_strlen(const char* p) { assert(p != NULL); int len =0; while (*p++) { len++; } return len; }

strcmp的实现:

int my_cstrcmp(const char* p , const char* q) { assert(p != NULL && q != NULL); //循环找到第一个不相等的字符 for (; *p == * q; ++p, ++q) { if (*p == 0) { return 0; } } return *(unsigned char*)p - *(unsigned char*)q >0 ? 1:-1; }

strcpy函数实现: char* myStrcpy(char* des, const char* source) { assert(des != NULL && source != NULL); char* ret = des; while ( (*des++ = *source++) != '/0'); return ret; }

itoa 函数实现:

void itoaTest(int num,char str[] ) { int sign = num,i = 0,j = 0; char temp[11]; if(sign<0)//判断是否是一个负数 { num = -num; }; do { temp[i] = num%10+'0'; num/=10; i++; }while(num>0); if(sign<0) { temp[i++] = '-'; } temp[i] = '/0'; i--; while(i>=0) { str[j] = temp[i]; j++; i--; } str[j] = '/0'; }

atoi函数实现:

int atoiTest(char s[]) { int i = 0,sum = 0,sign; //输入的数前面可能还有空格或制表符应加判断 while(' '==s[i]||'/t'==s[i]) { i++; } sign = ('-'==s[i])?-1:1; if('-'==s[i]||'+'==s[i]) { i++; } while(s[i]!='/0') { if (s[i] >= 0 && s[i] <= '9') { sum = s[i]-'0'+sum*10; i++; } else { break; } } return sign*sum; }

反转字符串递归实现:

char* reverse(char *str) { assert(str != NULL); int iLen = strlen(str); char c; int i; if (iLen<2) { return NULL; } else { //先把首尾交换 c = str[0]; str[0] = str[iLen-1]; str[iLen-1] = c; //如果长度为2的话,返回null if (iLen == 2) { return NULL; } // 辅助空间,用来保存原字符串没有反转的部分 char *str2 = (char*)malloc(iLen-1); memset(str2, '/0', iLen-1); //拷贝字符串 for (i=0; i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值