当前位置 博文首页 > 是琳琳呀!的博客:字符函数,字符串函数

    是琳琳呀!的博客:字符函数,字符串函数

    作者:[db:作者] 时间:2021-08-27 18:41

    字符函数,字符串函数

    我们处理字符和字符串的库函数有以下几点:
    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
    下一篇:没有了