1.拷贝函数
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
int my_strlen(const char* str)
{
assert(str != nullptr);
const char* cp = str;
while (*cp != '\0')
{
cp++;
}
return (int)(cp - str);
}
int my_strlen(const char* str)
{
assert(str != nullptr);
int i = 0;
while (str [i] != '\0')
{
++i;
}
return i;
}
char* my_strcpy(char* dest, const char* src)
{
assert(dest != nullptr && src != nullptr);
char* p = dest;
while (*p++ = *src++);
return dest;
}
2.字字符串拷贝
#include<stdio.h>
#include<ctype.h>
int main()
{
char stra[] = { "yhping" };
char strb[] = { "yhping" };
const char* sp1 = "yhping";
const char* sp2 = "yhping";
printf("%d \n", (stra == strb));//0
printf("%d \n", (sp1 == sp2));//1
return 0;
}
3.按照字母序排序比较两个字符串大小
#include<stdio.h>
#include<ctype.h>
#include<assert.h>
int my_strcpm(const char* fs, const char* sc)
{
assert(fs != nullptr && sc != nullptr);
while (*fs != '\0' && *sc != '\0')
{
if (*fs == *sc)
{
fs++;
sc++;
}
else
{
break;
}
}
return *fs - *sc;
}
int main()
{
char stra[] = { "yhping" };
char strb[] = { "yhping" };
int tag = my_strcpm(stra, strb);
printf("%d \n", tag);
return 0;
}
字符串相等时输出 0
字符串a<b时,输出正数
字符串a>b时,输出负数
int k = 0;
while ((k = *fs - *sc) == 0 && *fs++ && *sc++);
return k;
微软标准库写法