不要使用 strlen、strstr、memmove、memcpy 这几个函数再次编写以下上述内容
时间: 2023-07-10 17:23:36 浏览: 124
语言函数库-第四章(字符串函数).doc
好的,下面是不使用上述函数的代码实现:
1. strlen函数的替代方案:
```c
size_t my_strlen(const char* str)
{
size_t len = 0;
while (*str++) {
len++;
}
return len;
}
```
2. strstr函数的替代方案:
```c
char* my_strstr(const char* str1, const char* str2)
{
while (*str1) {
const char* p1 = str1;
const char* p2 = str2;
while (*p1 && *p2 && (*p1 == *p2)) {
p1++;
p2++;
}
if (!*p2) {
return (char*)str1;
}
str1++;
}
return NULL;
}
```
3. memmove函数的替代方案:
```c
void* my_memmove(void* dest, const void* src, size_t n)
{
char* p_dest = (char*)dest;
const char* p_src = (const char*)src;
if (p_dest <= p_src || p_dest >= (p_src + n)) {
while (n--) {
*p_dest++ = *p_src++;
}
} else {
p_dest += n - 1;
p_src += n - 1;
while (n--) {
*p_dest-- = *p_src--;
}
}
return dest;
}
```
4. memcpy函数的替代方案:
```c
void* my_memcpy(void* dest, const void* src, size_t n)
{
char* p_dest = (char*)dest;
const char* p_src = (const char*)src;
while (n--) {
*p_dest++ = *p_src++;
}
return dest;
}
```
以上是使用C语言实现的代码,如果需要在其他语言中实现,可以根据相应语言的语法进行转换。
阅读全文