strlen:
#include<stdio.h>
#include<windows.h>
//模拟实现strlen 非递归
int mystrlen1(const char* str)
{
if (str == NULL)
{
return -1;
}
int count = 0;
char*p = str;
while (*p != '\0')
{
++p;
++count;
}
return count;
}
//模拟实现strlen(递归)
int mystrlen2(const char* str)
{
if (str == NULL)
{
return -1;
}
if (*str == '\0')
{
return 0;
}
return 1+mystrlen2(str + 1);
}
//模拟实现strlen
int mystrlen3(const char* str)
{
if (str == NULL)
{
return -1;
}
char* p = str;
while (*p != '\0')
{
++p;
}
return p - str;
}
int main()
{
char str[] = "abcdefg";
printf("sys strlen is %d\n", strlen(str));
printf("sys sizeof is %d\n", sizeof(str));
int ret1 = mystrlen1(str);
printf("strlen = %d\n", ret1);
int ret2 = mystrlen2(str);
printf("strlen = %d\n", ret2);
int ret3 = mystrlen3(str);
printf("strlen = %d\n", ret3);
system("pause");
return 0;
}
strcpy:
#include<stdio.h>
#include<windows.h>
//模拟实现strcpy
char* mystrcpy1(char* dst, const char* str)
{
if (str == NULL)
{
return NULL;
}
char* p = dst;
while (*dst++ = *str++)
{
;
}
return p;
}
int main()
{
char str[] = "abcdefg";
char dst[256] = { 0 };
char* p = mystrcpy1(dst, str);
printf("strcpy is %s\n", p);
system("pause");
return 0;
}
strncpy:
#include<stdio.h>
#include<windows.h>
//模拟实现strncpy
char* mystrncpy(char* dst, const char* str,int n)
{
if (str == NULL)
{
return NULL;
}
char* p = dst;
while (n)
{
*dst++ = *str++;
--n;
}
return p;
}
int main()
{
char str[] = "abcdefg";
char dst[256] = { 0 };
char* p = mystrncpy(dst, str,3);
printf("strncpy is %s\n", p);
system("pause");
return 0;
}
strcat(字符串拼接):
//模拟实现strcat
char* mystrcat(char* str, char* dst)
{
if (dst == NULL || str == NULL)
{
return NULL;
}
char* p = str;
while (*str != '\0')
{
str++;
}
while (*str++ = *dst++)
{
;
}
return p;
}
int main()
{
char str[10] = "abc";//确保最后容量能够存放所有字符
char dst[] = "def";
printf("strcat is %s\n", mystrcat(str, dst));
system("pause");
return 0;
}
strcmp(字符串比较):
#include<stdio.h>
#include<windows.h>
//模拟实现strcmp
int mystrcmp(const char* str, const char* dst)
{
if (str == NULL || dst == NULL)
{
return -1;
}
while (*str++ == *dst++)
{
if (*str == '\0' && *dst == '\0')
{
return 0;
}
}
return -1;
}
int main()
{
char str[] = "abcd";
char dst[] = "abcd";
int ret = mystrcmp(str, dst);
printf("strcmp is %d\n", ret);
system("pause");
return 0;
}