C++ 实现strlen,strcpy,strcat等函数
2013-05-13 14:01
337 查看
通过实现这些函数,让我明白写一个简单的函数其实也要考虑一些问题的,最基本的函数参数的合法性,使用全局变量,全局函数等的合法性。而且写代码时要细心,在for循环语句中,循环次数很容易搞错,导致数组操作越界或指针访问越界。
strlen的实现:
strcpy的实现:
strncpy的实现:
strcmy的实现:
strcat的实现:
atoi的实现:
itoa的实现:
strlen的实现:
size_t myStrlen(const char *str) { assert(str !=NULL); size_t len=0; while((*str++) !='\0') { ++len; } return len; }
strcpy的实现:
char *myStrcpy(char *strDest, const char *strSrc) { assert((strDest !=NULL) && (strSrc !=NULL)); char* p=strDest; while((*strDest++ = *strSrc++) !='\0'); return p; }
strncpy的实现:
char* strncpy(char* strDest,const char* strSource,size_t count) { assert((strDest !=NULL)&&(strSource !=NULL)); char* p=strDest; while(count &&(*strDest++=*strSource++)) /* copy string */ --count; if(count !=0) /* pad out with zeroes */ while(--count) *strDest++='\0'; return p; }
strcmy的实现:
int myStrcmp(const char *str1, const char *str2) { assert((str1 != NULL) && (str2 != NULL)); //循环找到第一个不相等的字符 for (; *str1 == *str2; ++str1,++str2) { if (*str1 == '\0') { return 0; } } return *(unsigned char*)str1 - *(unsigned char*)str2 >0 ? 1:-1; }
strcat的实现:
char* myStrcat(char *str1, const char *str2) { assert((str1 !=NULL) && (str1 !=NULL)); char* p=str1; while((*str1++) !='\0'); --str1; for(; *str2 !='\0'; ++str1,++str2) { *str1=*str2; } *str1='\0'; return p; }
atoi的实现:
int atoiTest(const char* s) { assert(s !=NULL); 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' && s[i] <= '9') { sum = s[i]-'0' +sum*10; ++i; } return sign*sum; }
itoa的实现:
char* itoaTest(int num,char* buf,int radix) { assert(buf !=NULL); int sign,digval; char* p=buf; sign=(radix==10 && num<0); if (sign) { *p++='-'; num =-num; } do { digval=num % radix; num /= radix; if(digval >9) { *p++ =digval -10 + 'a'; } else { *p++ =digval + '0'; } }while(num >0); *p-- = '\0'; char* q=buf; if(sign) { ++q; } char temp; while(q<p) { temp=*q; *q=*p; *p=temp; ++q; --p; } return buf; }
相关文章推荐
- C++实现strLen,strCpy,strCmp,strCat
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- C语言中strlen() strcpy() strcat() strcmp()函数的实现方法
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
- 【转】字符串操作函数 C语言实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 读书笔记:自定义函数实现字符串处理函数----strlen、strcmp、strcat、strcpy
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- strlen、strcpy、strcat等字符串处理函数的实现
- C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记
- 自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- [C++基础]032_常用的字符串处理函数(strcat,strcpy,strcmp,strupr,strlwr,strlen)
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现