用递归的方式完成strlen
int my_len(const char* str) {
     static int count;
     assert(str);//能够判断为不为空指针
     if (*str != '\0') {
         my_len(++str);
         return ++count;
     }
     else {
         count = 0;
         return count;;//真正的strlen是unsigned int
     }
 }
用指针的方法完成strlen
int my_len1(const char* str) {
     int count=0;
     assert(str);
     while (*str != '\0') {
         count++;
         str++;
     }
     return count;
 }
用数组的方法完成strlen
int my_len2(char str[]) {
     int count = 0;
     int i = 0;
     while (str[i] != '\0') {
         i++;
         count++;
     }
     return count;
 }
int my_ncat(char* str1, const char* str2,int n) {
     int i = 0;
     while (*str1 != '\0') {
         str1++;
     }
     while (i<n) {
         if (*(str2 + i) != 0) {
             *str1 = *(str2 + i);
             i++;
             str1++;
         }
         else {
             *str1 = '\0';
             break;
         }
     }if (i == n)
         *str1 = '\0';
 }
int my_cmp(const char*str1 ,const char*str2){
     assert(str1 && str2);
     while (*str1 == *str2) {
         if (*str1 == '\0')
             return 0;
         str1++;
         str2++;
     }
     return (*str1 - *str2);
 }
void my_cat(char* dest, const char* dest1) {
     while (*dest != '\0'){
         dest++;
     }
         while (*dest++ = *dest1++)//无法自己给自己追加,要往后补充一个'\0',得自己strcats是不行的
             ;
}
void my_copy(char* str, const char* str1) {
     assert(str);
     assert(str1);
     while (*str++ = *str1++)
         ;
 }
strstr模拟
char* my_strstr(const char* str1, const char* str2) {
     assert(str1 && str2);
     char* p = str1;
     char* s1 = str1;
     char* s2 = str2;
     while (*p) {
         s1 = p;
         s2 = str2;
         while (*s1 == *s2&&*p!='\0'&&*s2!='\0') {
             s1++;
             s2++;
         }
         if (*s2 == '\0') {
             return (char*)p;
         }
         p++;
     }
     return NULL;
 }
strtok使用(字符串分割)
//char arr1[] = "abcd.aad";
 //char arr2[] = ",.";
 //char* ret = strtok(arr1, arr2);
//printf("%s\t", ret);
 //ret = strtok(NULL, arr2);
 //printf("%s", ret);//如果中间有多个相同的分隔符,则只需要一次即可,他会自己跳过去的
strerror
    FILE* pf = fopen("text.txt","r");
     if (pf == NULL) {
         printf("%s", strerror(errno));
     }