目录
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int MyStrlen(char* str)
{
int len = 0;
while (str[len] != '\0')
len++;
return len;
}
int main()
{
char str[50] = { "Hello,world!" };
int ans = MyStrlen(str);
printf("%d\n", ans);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
char* MyStrcpy(char* str2, char* str1)
{
char* p = str2;
while (*p++ = *str1++)
;
return str2;
}
int main()
{
char str1[50] = { "Hello,world!" };
char str2[50];
MyStrcpy(str2, str1);
printf("%s\n", str2);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int MyStrcmp(const char* str1, const char* str2)
{
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0' && str1[i] == str2[i])
i++;
return str1[i] - str2[i];
}
int main()
{
const char* str1 = "apple";
const char* str2 = "banana";
const char* str3 = "apple";
int ans1 = MyStrcmp(str1, str2);
int ans2 = MyStrcmp(str1, str3);
printf("%d\n%d", ans1, ans2);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
char* MyStrcat(char* str1, const char* str2)
{
char* re = str1;
while (*str1)
str1++;
while (*str2)
{
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return re;
}
int main()
{
char str1[50] = "Hello,";
const char* str2 = "world!";
printf("%s\n", MyStrcat(str1, str2));
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
char* MyStrstr(const char* str1, const char* str2)
{
if (*str2 == '\0')
return (char*)str1;
while (*str1)
{
const char* s1 = str1;
const char* s2 = str2;
while (*s1 && *s2 && (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2 == '\0')
return (char*)str1;
str1++;
}
return NULL;
}
int main()
{
const char* str1 = "Hello world";
const char* str2 = "world";
char* ans = MyStrstr(str1, str2);
if (ans)
printf("%ld\n", ans - str1);
else
printf("没找到\n");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void* MyMemcpy(void* brr, const void* arr, size_t size)
{
char* b = (char*)brr;
const char* a = (const char*)arr;
for (size_t i = 0; i < size; i++)
b[i] = a[i];
return brr;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int brr[5] = { 0 };
MyMemcpy(brr, arr, sizeof(brr));
int size = sizeof(brr) / sizeof(brr[0]);
for (int i = 0; i < size; i++)
{
printf("%d ", brr[i]);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <cassert>
void* MyMemmove(void* dest, const void* src, size_t size)
{
assert(dest && src);
char* ret = (char*)dest;
if (dest < src)
{
while (size--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else if (dest > src)
{
while (size--)
{
*((char*)dest + size) = *((char*)src + size);
}
}
return ret;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 };
MyMemmove(arr + 3, arr, 20);
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
感谢大佬支持!!!