用自己的代码改写string函数族并封装到函数中
1、改写strlen
通过遍历字符数组来找到'\0'的位置,从而得到字符数组长度。
int my_strlen(char str1[])
{
int count = 0;
int i = 0;
for (i = 0; '\0' != str1[i]; i++)
{
count++;
}
return count;
}
2、改写strcpy
通过遍历字符数组str2,将str2数组中'\0'前的元素赋值到str1中。
char* my_strcpy(char str1[], char str2[])
{
int i = 0;
while (1)
{
str1[i] = str2[i];
if ('\0' == str2[i])
{
break;
}
i++;
}
return str1;
}
3、改写strcmp
将str1与str2按顺序遍历元素差值,如果为0则返回差值,否则继续遍历,直到两数组同时到'\0'结束遍历,此时两字符数组大小一致,返回0。
int my_strcmp(char str1[], char str2[])
{
int i;
for (i = 0; str1[i] != '\0' || str2[i] != '\0'; i++)
{
if (str1[i] - str2[i] != 0)
return str1[i] - str2[i];
}
return 0;
}
4、改写strcat
从字符数组str1 的末尾开始赋值str2中元素的值,直到str2数组中的'\0'为止。
char* my_strcat(char str1[], char str2[])
{
int i, j;
i = strlen(str1);
for (j = 0; j < strlen(str2); j++)
{
str1[i++] = str2[j];
}
str1[i] = '\0';
return str1;
}