#include <stdio.h>
#include <assert.h>
char* MyStrcpy (char* str1, char* str2)
{
assert (str1 != NULL && str2 != NULL); // 断言判断
char* str = str1;
while ((*str1++ = *str2++) != '\0');
return str;
}
int MyStrlen (char* str)
{
int n = 0;
if (str == '\0')
return 0;
while (*str++ != '\0')
n++;
return n;
}
int MyStrcmp (char* str1, char* str2)
{
if (str1 == NULL && str2 == NULL)
return 0;
int n = 0;
int m = 0;
while (*str1++ != '\0')
n++;
while (*str2++ != '\0')
m++;
if (m == n)
return 0;
else if (n > m)
return 1;
else
return -1;
}
char* MyStrcat (char str1[], char* str2)
{
if (str1 == NULL && str2 == NULL)
return NULL;
if (str1 == NULL)
return str2;
if (str2 == NULL)
return str1;
char* strr = str1;
int i = 0;
while (1)
{
if (str1[i] == '\0')
str1[i] = *str2++;
if (*str2 == '\0')
break;
i++;
}
return strr;
}
int main (void)
{
char str1[10] = "abc";
// char str1[] = "abc";
char* str2 = "defg";
char* str = MyStrcpy (str1, str2);
printf ("%s\n", str);
int len = MyStrlen (str1);
printf ("%d %d\n", len, sizeof(str2));
int n = MyStrcmp (str1, str2);
printf ("%d\n", n);
int strr = MyStrcat (str1, str2);
printf ("%s\n", strr);
return 0;
}