核心
- strcpy() : 源字符串必须以 ‘\0’ 结束。 会将源字符串中的 ‘\0’ 拷贝到目标空间
- strcmp() : 第一个字符串大于第二个字符串,则返回大于0的数字 第一个字符串等于第二个字符串,则返回0 第一个字符串小于第二个字符串,则返回小于0的数字
- strcat() : 源字符串必须以 ‘\0’ 结束。 目标空间必须有足够的大,能容纳下源字符串的内容
实现
char* MyStrcpy(char* dest, char* src){
assert(dest && src);
char* p = dest;
while (*src != '\0'){
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
int main () {
char str1[100] = "asdfg";
char str2[100] = "zxcvb";
MyStrcpy(str1, str2);
return 0;
}
int MyStrcmp(const char* str1, const char* str2){
assert(str1 != NULL && str2 != NULL);
while (*str1 != '\0' || *str2 != '\0'){
if (*str1 - *str2 == 0){
str1++;
str2++;
continue;
}
else if (*str1 - *str2 > 0){
return 1;
}
else{
return -1;
}
}
return 0;
}
int main () {
char* str1 = "asd";
char* str2 = "asda";
int ret = MyStrcmp(str1, str2);
return 0;
}
char* MyStrcat(char* str1, const char* str2){
assert(str1 != NULL && str2 != NULL);
char* p = str1;
while (str1 != '\0'){
str1++;
}
while (*str1++ = *str2++){
;
}
return p;
}
int main () {
char str1[100] = "asdfg";
char str2[100] = "zxcvb";
MyStrcat(str1, str2);
return 0;
}