1、模拟实现strcpy
- char *my_strcpy( char *dest, const char *str)
- {
- assert(dest != NULL);
- assert(str != NULL);
- while (*dest++=*str++)
- {
- ;
- }
- return dest;
- }
- int main()
- {
- char p[20];
- char *p1 = "world";
- my_strcpy(p, p1);
- printf("%s\n", p);
- system("pause");
- return 0;
- }
2、模拟实现strcat
- char* my_strcat(char*dest, const char* str)
- {
- assert(dest != NULL);
- assert(str != NULL);
- char *ret = dest;
- while (*dest)
- {
- dest++;
- }
- while (*str)
- {
- *dest++ = *str++;
- }
- return ret;
- }
- int main()
- {
- char p[20] = "hello ";
- my_strcat(p, "world");
- printf("%s", p);
- system("pause");
- return 0;
- }
3、模拟实现strstr
- char* my_strstr(const char *dest, const char*str)
- {
- assert(dest != NULL);
- assert(str != NULL);
- char *ret = (char*)dest;
- char *cur = (char*)str;
- while (*cur)
- {
- if ((*ret) && (*cur) && (*ret++ = *cur++))
- {
- return cur;
- }
- cur++;
- }
- return NULL;
- }
-
- int main()
- {
- char p[] = "abcdefd";
- char* p1 = "defr";
- char* ret = NULL;
- ret= strstr(p, p1);
- if (ret == NULL)
- {
- printf("no");
- }
- else
- {
- printf("%s", ret);
- }
- system("pause");
- }
4、模拟实现strchr
- char* my_strchr(const char*dest, int x)
- {
- assert(dest != NULL);
- char*ret = (char*)dest;
- while (*ret)
- {
- if ((*ret) && (*ret == x))
- {
- return ret;
- }
- ret++;
- }
- return NULL;
- }
-
- int main()
- {
- char p[] = "abcdefg";
- char*ret=my_strchr(p, 'f');
- if (ret == NULL)
- {
- printf("no\n");
- }
- else
- {
- printf("%s", ret);
- }
- system("pause");
-
- }
5、模拟实现strcmp
- int my_strcmp(const char*str1, const char*str2)
- {
- assert(str1 != NULL);
- assert(str2 != NULL);
- while (*str1==*str2)
- {
- if (*str1 == '\0')
- {
- return 0;
- }
- *str1++;
- *str2++;
- }
- if (*str1 > *str2)
- {
- return 1;
- }
- else if (*str1 < *str2)
- {
- return -1;
- }
- }
-
- int main()
- {
- char p1[] = "dccbcc";
- char p2[] = "dccccc";
- int ret = my_strcmp(p1, p2);
- printf("%d\n", ret);
- system("pause");
- }
6、模拟实现memcpy
- void*my_memcpy(void*dest, const void*str, size_t sz)
- {
- assert(dest != NULL);
- assert(str != NULL);
- char* ret = (char*)str;
- char* cur = (char*)dest;
- while (sz--)
- {
- *cur++ = *ret++;
- }
- return dest;
- }
-
- int main()
- {
- char p1[20] = { 0 };
- char* p2 = "world";
- my_memcpy(p1, p2, 4);
- printf("%s\n", p1);
- system("pause");
- return 0;
- }
7、模拟实现memmove
- void* my_memmove(void*dest, const void*str, size_t len)
- {
- assert(dest != NULL);
- assert(str != NULL);
- char *pdest = (char*)dest;
- char* pstr = (char*)str;
- if ((pstr < pdest) && (pdest < pstr + len))
- {
- while (len--)
- {
- *(pdest+len) = *(pstr+len);
- }
- }
- else
- {
- while (len--)
- {
- *pdest++ = *pstr++;
- }
- }
- return dest;
- }
- int main()
- {
- char p[] = "abcdefgh";
- my_memmove(p, p+2, 4);
- printf("%s", p);
- system("pause");
- return 0;
|