已传入github,可下载,想测试对应函数,调用传参即可,记得注释掉之前的主函数
文件名为2022_1_19,因为是是那天写的
https://github.com/frankRenlf/c_programs.githttps://github.com/frankRenlf/c_programs.git
部分函数代码我也放这儿了,
int my_strlen(const char* str)
{
assert(str);
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
char* my_strcpy(char* dest, const char* src)
{
char* ret = dest;
assert(dest && src);
while (*dest++ = *src++)
{
;
}
return ret;
}
char* my_strcat(char* dest, const char* src)
{
assert(dest && src);
char* ptr = dest;
while (*dest != '\0')
{
dest++;
}
while (*dest++ = *src++)
{
;
}
return ptr;
}
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
//if (*str1 > *str2)
//{
// return 1;
//}
//else
//{
// return -1;
//}
return *str1 - *str2;
}
char* my_strncpy(char* dest, const char* src, size_t num)
{
char* ptr = dest;
assert(dest && src);
for (int i = 0; i < num; i++)
{
if (*src != '\0')
{
*dest++ = *src++;
}
else
{
*dest++ = '\0';
}
}
return ptr;
}
char* my_strstr(const char* str, const char* substr)
{
const char* s1 = str;
const char* s2 = substr;
char* current = str;
assert(str && substr);
if (*substr == '\0')
{
return str;
}
while (*current != '\0')
{
s1 = current;
s2 = substr;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return current;
}
current++;
}
return NULL;
}
void* my_memcpy(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* ptr = dest;
while(num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return ptr;
}
void* my_memmove(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* ptr = dest;
if ((char*)dest <= (char*)src)
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ptr;
}
有问题可在评论指出,觉得还行就给个赞和关注吧