1、模拟strlen(临时变量法)
#include <stdio.h>
#include <assert.h>
int my_strlen(const char* str);
int main() {
char str[] = "abcdefh";
int ret = my_strlen(str);
printf("%d", ret);
return 0;
}
int my_strlen( const char* str)
{
assert(str != NULL);
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
2、模拟strlen(指针减指针)
#include <stdio.h>
#include <assert.h>
int my_strlen(const char* str);
int main()
{
char str[] = "abcdfef";
int ret = my_strlen(str);
printf("%d", ret);
return 0;
}
int my_strlen(const char* str)
{
assert(str != NULL);
char* p = str;
while (*p != '\0')
{
p++;
}
return p - str;
}
3、模拟strlen(函数递归)
#include <stdio.h>
#include <assert.h>
int main()
{
char str[] = "abcdef";
int ret = my_strlen(str);
printf("%d", ret);
return 0;
}
int my_strlen(const char* str)
{
if (*str == '\0')
return 0;
else
return 1 + my_strlen(str + 1);
}
4、模拟实现strcpy
#include <stdio.h>
#include <assert.h>
char* my_strcpy(char* dest, const char* src);
int main()
{
char str1[30] = "abcdef";
char* p = "hig";
char* a