字串模擬實現

2021-08-04 14:53:33 字數 4273 閱讀 7725

1.三種方式模擬實現strlen函式。

方法1:用計數器模擬實現

#define _crt_secure_no_warnings

#include

#include

#include

#include

int mystrlen( char* str)

return ret;

}int main()

;printf("請輸入字串\n");

scanf("%s", arr);

printf("%s的長度是%d\n", arr, mystrlen(arr));

system("pause");

return 0;

}方法2:用函式遞迴的方法模擬實現

#define _crt_secure_no_warnings

#include

#include

#include

#include

int my_strlen( char* str)

else

return 1 + my_strlen(str+1);

}int main()

;printf("請輸入字串\n");

scanf("%s", arr);

printf("%s的長度是%d\n", arr, my_strlen(arr));

system("pause");

return 0;}

//方法3:用指標減指標的方法模擬實現

#define _crt_secure_no_warnings

#include

#include

#include

#include

int my_strlen(char* str)

return str - p;

}int main()

;printf("請輸入字串\n");

scanf("%s", arr);

printf("%s的長度是%d\n", arr, my_strlen(arr));

system("pause");

return 0;

}2.模擬實現strcpy 

//方法1:

#include

#include

#include

#include

char* mystrcpy(char* dest,const char* src)

return ret;

}int main()

//方法2

#include

#include

#include

#include

char *mystrncpy(char *dest, const char* src, size_t n)//將src中n個字元拷貝到dest

if (*(dest - 1) != '\0')//判斷是否已經將『\0』複製到目標字串中  

*dest = '\0';      //若沒有則給目標字串最後新增『\0』   

return ret;

}int main()

////方法3:

#include

#include

#include

#include

char* mystrcpy(char* dest, const char* src)

*dest ='\0';

//給目標字串最後新增『\0』  

return ret;

}int main()

3.模擬實現strcat 

#define _crt_secure_no_warnings 1  

#include

#include

#include

#include

char* mystrcat(char* str1, char* str2)

while (*str1++ =*str2++)

return ret;

}int main()

;char arr2 = "fgh";

printf("%s\n", mystrcat(arr1, arr2));

system("pause");

return 0;}

4.模擬實現strcmp 

//方法1:

#define _crt_secure_no_warnings 1  

#include

#include

#include

int mystrcmp(const char* str1,const char* str2)

str1++;

str2++;

}if ((*str1 == '\0'&&*str2 != '\0') || (*str1 != '\0'&&*str2 == '\0'))

else

return 0;

}int main()

else if (ret > 0)

else

system("pause");

return 0;}

方法2:

#define _crt_secure_no_warnings 1  

#include

#include

#include

int my_strcmp(const char* str1, const char* str2)

if (ret < 0)

else if (ret<0)

return ret;

}int main()

else if (ret ==1)

else

system("pause");

return 0;}

5.模擬實現strstr 

#define _crt_secure_no_warnings 1

#include

#include

#include

#include

char * my_strstr(const char * str1, const char *str2)

while (*cp)

if (*substr == '\0')

cp++;

}return null;

}int main()

else

system("pause");

return 0;}

6.模擬實現memcpy 

#define _crt_secure_no_warnings

#include

#include

#include

#include

void* my_memcpy(void* dest, const void* src, size_t count)

return ret;

}int main()

;int str2 = ;

char* p = (char*)my_memcpy(str2, str1, 5);

for (int i = 0; i < sizeof(str1) / sizeof(str1[0]); i++)

printf("\n");

system("pause");

return 0;}

7.模擬實現memmove 

#define _crt_secure_no_warnings

#include

#include

#include

#include

void * my_memove(void* dest, void* src, size_t count)

}else                       //從後向前拷貝

}return ret;

}int main()

;char arr1 = "abcdefgh";

int i = 0;

int sz = sizeof(arr1) / sizeof(arr1[0]);

//my_memove(arr1 + 2, arr1 + 1, 4 * sizeof(int));

my_memove(arr1 + 2, arr1 + 1, 4 * sizeof(char));

printf("%s", arr1);

/*for (i = 0; i*/

printf("\n");

system("pause");

return 0;

}

模擬實現字串庫函式

1.strcat 1 函式功能 實現兩個字串的連線 2 思想 首先遍歷目標字串,找到 0 的位址,然後將資源字串通過指標一次一次的拼接在目標字串後面,直到指標走到資源字串的 0 3 char mystrcat char strdestination,const char strsource whil...

模擬實現字串查詢函式strstr

題目 不使用庫函式,模擬實現字串查詢函式strstr的功能。例如 在字串dest abcdefg 中查詢字串src bcd 是否存在,如存在返回 bcd 在 abcdefg 中的起始位置,即 bcdefg 若不存在,則返回null。分析 1.首先定義乙個慢指標slow遍歷dest字串,初始指向des...

模擬實現字串比較函式 strcmp

題目 不使用庫函式,模擬實現字串比較函式strcmp。例如 比較 abcde bc 和 bcde bcde 和 abcd ab 分析 字串在進行比較時,逐個字元進行比較其ascii碼值。字串1大於字串2,返回1,小於,返回 1,等於返回0.當兩字串所有字元的ascii碼值相等且字元個數相等時,兩字串...