Strlen的实现
Strlen函数的作用是获取字符串的长度
实现:
int MyStrlen(char *str) {
int count=0;
for (int i = 0; str[i] != '\0'; i++) {
count++;
}
return count;
}
Strcat的实现
Strcat(char* str1,char* str2)的作用是将第二个字符串接到第一个字符串后面
需要注意的是,保证str1+str2的长度不超过str1的最大长度
实现:
char* MyStrcat(char* str1, char* str2) {
int len1 = MyStrlen(str1);
int len2 = MyStrlen(str2);
for (int i = 0;i<len2; i++) {
str1[len1++] = str2[i];
}
return str1;
}
Strcpy的实现
Strcpy(char* str1,char* str2)函数的作用是将str2的值赋值给str1,原str1的值被覆盖
注意str1的长度,一定要大于等于str2的字符串长度,存不下就会报错
实现:
char* MyStrcpy(char* str1, char* str2) {
int len1 = MyStrlen(str1);
int len2 = MyStrlen(str2);
for (int i = 0; i < len1; i++) {
str1[i] = '\0';
}
for (int j = 0; j < len2; j++) {
str1[j] = str2[j];
}
return str1;
}
Strcmp的实现
Strcmp(char* str1,char* str2)函数的作用是将str1与str2逐个字符进行Ascall码对比,若str1大于str2,返回一个大于0的数(一般是1),若str1小于str2,返回一个小于0的数(一般是-1),若str1等于str2,则返回0。
int MyStrcmp(char* str1,char* str2) {
int len1 = MyStrlen(str1);
int len2 = MyStrlen(str2);
int i = 0,j=0;
int count = 0;
int flag = 0;
while (str1[i] != '\0' && str2[j] != '\0') {
if (str1[i] == str2[j]) {
count++;
}
else if (str1[i] > str2[j]) {
flag = 1;
break;
}
else {
flag = -1;
break;
}
i++;
j++;
}
if (count == len1 && len1 == len2) {
flag = 0;
}
return flag;
}