当前位置 博文首页 > 是琳琳呀!的博客:字符函数,字符串函数
我们处理字符和字符串的库函数有以下几点:
1:求字符串长度
strlen
void MyStrlen(const * str)
{
assert(str != NULL);
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
2:复制
strcpy:
void MyStrcpy(char *dest, coust char*scr)
{
assert(dest != NULL&&scr != NULL)
char *p = dest;
while (*str != '\0')
{
*dest = *src;
src++;
dest++;
}
*dest = '\0';
return p;
}
3:字符串比较
strcmp:
int MyStrcmp(const char *str1, const char *str2)
{
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
if (*str1 > *str2)
{
return 1;
}
else
{
return -1;
}
}
4:字符串拼接
srtcat:
char MyStrcat(char *dest, const char*src)
{
assert(dest != NULL);
if (src == NULL)
{
return dest;
}
char *p = dest;
while (*dest != '\0')
{
dest++;
}
while (*src != '\0')
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
5:寻找在一个字符串第一次出现另一个字符串
strstr:
char MyStrstr(const *str1, const *str2)
{
char *start = str1;
while (*start != 0)
{
char *s1 = start;
char *s2 = str2;//每次循环上来返回到str2首元素
while (*s1 != 0 && *s2 != 0 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return start;
}
start++;
}
}
6:同一个字符串上的拷贝
memcpy:(拷贝时和目标不重叠)
void MyMemcpy(void * dest, void *src, int count)
{
void *ret = dest;
while(count != 0)
{
*(char*)dest = *(char*)src;
((char*)dest)++;
((char*)dest)++;
count--;
}
return ret;
}
7:同上;可重叠
memmove:
void * Mymemmove(void *dest, void * src, int count)
{
void *ret = dest;
if (src >= dest)
{
while (count != 0)
{
*(char*)dest = *(char*)src;
((char*)dest)++;
((char*)src)++;
count--;
}
}
else
{
count--;
while (count >= 0)
{
*((char*)dest+count) = *((char*)src+count);
count--;
}
}
return 0;
}
cs