字符和字符串函数
自己实现 strlen() 求字符串长度
int Mystrlen(char *p)
{
int count=0;
while (*p != NULL)
{
count++;
p++;
}
return count;
}
int main()
{
char *str = "abcdef";
printf("%d\n", Mystrlen(str));
return 0;
}
自己实现strcpy() 复制字符串
char* Mystrcpy(char *des, const char*src)
{
assert(des&&src);
char *p = des;
while (*des++ = *src++);
return p;
}
int main()
{
char str[10] = "abc";
char* str1 = "11";
printf("%s\n", Mystrcpy(str, str1));
}
自己实现strcat() 拼接字符串
char* mystrcat(char* dest,char* src)
{
assert(dest);
if (src == NULL)
{
return dest;
}
char* p = dest;
char* start = dest + strlen(dest);
while (*start++ = *src++);
return p;
}
int main()
{
char str1[10] = "123";
char* str2 = "456";
printf("%s\n", mystrcat(str1, str2));
}
自己实现strcmp() 比较字符串
int Mystrcmp(char* str1,char* str2)
{
assert(str1&&str2);
if (str1 == NULL)
return -1;
if (str2 == NULL)
return 1;
while(*str1==*str2)
{
if (*str1=='\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
int main()
{
char *str1 = "125";
char *str2 = "124";
int ret = Mystrcmp(str1, str2);
printf("%d\n", ret);
}
自己实现strstr() 查找子串在主串第一次出现的位置
char* Mystrstr(char* str,char* substr)
{
assert(str&&substr);
if (substr == NULL)
return NULL;
char* p = str;
while (*p)
{
char* start = p;
char* sub = substr;
while (start&&sub&&*sub == *start)
{
start++;
sub++;
}
if (*sub == '\0')
return p;
p++;
}
return NULL;
}
int main()
{
char* str = "12343456";
char* sub = "345";
char* ret = Mystrstr(str, sub);
printf("%s\n", ret);
}
内存操作函数
自己实现memcpy() 内存复制函数
char* Mymemcpy(char* dest,const char* src,int size)
{
assert(dest&&src);
if (src == NULL)
return dest;
char *p = dest;
while (size--)
{
*dest++ = *src++;
}
return p;
}
int main()
{
char dest[10] = "123456";
char *src = "789";
printf("%s\n", Mymemcpy(dest, src, 3));
}
自己实现memmove()
char* Mymemmove(char* dest, char* src, int size)
{
assert(dest&&src);
if (src == NULL)
return dest;
char *p = dest;
if (src > dest)
{
while (size--)
{
*dest++ = *src++;
}
}
else
{
for (int i = size; i >= 1; i--)
{
*(dest + i - 1) = *(src + i - 1);
}
}
return p;
}
int main()
{
char dest[10] = "123456";
printf("%s\n", Mymemmove(dest+2, dest, 3));
}