面試中常考的C函數庫中的字串處理函數

來源:互聯網
上載者:User
#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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.