#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>int myStrlen(const char *strDest){assert(NULL != strDest);const char *p = strDest;int len = 0;while( (*p) != '\0' ){len++;p++;}return len;}int itrStrlen(const char *strDest){assert(NULL != strDest);return ('\0' != *strDest) ? (1 + itrStrlen(strDest+1)) : 0;}char* myStrcpy(char *strDst, const char *strSrc){assert(NULL != strDst && NULL != strSrc);char *strRst = strDst;while( *strSrc != '\0' )*(strDst++) = *(strSrc++);return strRst;}int myStrcmp(const char *strL, const char *strR){assert(NULL != strL && NULL != strR);int ret = 0;const char *left = strL;const char *right = strR;while( (!(ret = (*left - *right))) && (*right != '\0') ){left++;right++;}if(ret < 0) ret = -1;else if(ret > 0) ret = 1;return ret;}//???上網查void * myMemset(void *buffer, int c, size_t count){assert(NULL != buffer);char *p = (char *)buffer;while(count--){*p = 'c'; printf("%d", *p);p++;}return buffer;}char * myStrchr(char *str, int c){assert(NULL != str);for(; *str != (char)c; str++);if(*str == '\0') return NULL;return str;}char * myStrcat(char *strDes, const char *strSrc){assert(NULL != strDes && NULL != strSrc);char *addr = strDes;while(*strDes != '\0') strDes++;while( (*strDes++ = *strSrc++) != '\0' );return addr;}//*有點難度void * myMemcpy(void *to, const void *from, size_t count){assert(NULL != to && NULL != from);void *ret = to;char *pto = (char *)to;char *pfrom = (char *)from;assert(pto < pfrom || pto > (pfrom+count-1));//!!!while(count--){*pto++ = *pfrom++;}return ret;}void test(){//test strlenchar *s = "dfdafdaf";int len = myStrlen(s);char *ss = "";len = myStrlen(ss);printf("%d\n", len);//test strcpychar *str = (char *)malloc(sizeof(char)*10);strcpy(str, s);//strcpy(str, "abcdefg");//strcpy(ss, s); //由於未對ss分配記憶體,因此會出現異常printf("%s\n", str);//test strcmpint ret = myStrcmp(str, s);printf("%d\n", ret);ret = myStrcmp(str, ss);printf("%d\n", ret);ret = myStrcmp(str, "zfdfd");printf("%d\n", ret);//test memsetint a[10];myMemset(a, 1, sizeof(int)*10);//test strchrchar *p = myStrchr(s, 'a');printf("\n%c\n", *p);//test strcat//char *cat = (char *)malloc(sizeof(char)*20);myStrcat(str, "aab");printf("%s\n", str);}int main(){test();return 0;}