# 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 ;}//??? Query 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;} // * somewhat difficult 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); // The printf ("% s \ n", STR) exception occurs because no memory is allocated to the SS ); // 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 ;}