运维开发网

详解C语言对字符串处理函数的实现方法

运维开发网 https://www.qedev.com 2022-01-09 10:41 出处:网络 作者: GREEN@dehua
目录strlen:1.计数器版本:2.递归的版本3.指针-指针版本strcat:strcmp:总结strlen: 1.计数器版本:
目录
  • strlen:
    • 1.计数器版本:
    • 2.递归的版本
    • 3.指针-指针版本
  • strcat:
    • strcmp:
      • 总结

        strlen:

        1.计数器版本:

        #include<stdio.h>www.cppcns.com;
        #include<string.h>
        #include<assert.h>
        int my_strlen(const char *str)
        {
        	int count =0www.cppcns.com;
        	assert(str!=NULL);
        	while(*str!='\0')
        	{
        		count++;
        		str++;
        	}
        	return count;
         } 

        2.http://www.cppcns.com递归的版本

        int my_strlen(const char *str)
        {
         assert(str != NULL);
         if (*str == '\0')
         return 0;
         return (my_strlen(++str)+1);
        }

        3.指针-指针版本

        int my_strlen(const char *str)
        {
          char *end = str;
          assert(str!=NULL);
          assert(end!=NULL)http://www.cppcns.com;
          while (*end != '\0')
          {
           end++;
          }
           return end - str;
        }

        strccDXYcXbCSDat:

        #include<stdio.h>
        #include<string.h>
        #include<assert.h>
        char *my_strcat(char *dest,char *str)
        {
        	char *ret=dest;//存dest的首地址 
        	assert(dest&&str);
        	while(*dest)
        	{
        		dest++;
        	}
        	while(*dest++=*str++);
        	dest=ret;
        	return dest;
        }

        strcmp:

        int my_strcmp(char *str1, char *str2)
        {
        	assert(str1&&str2);
        	while(*str1==*str2)
        	{
        		if(str1=='\0'&&str2=='\0')
        		return 0;
        		str1++;
        		str2++; 
        	}
        	if(*str1>*str2)
        	return 1;
        	return -1;
        	 //或return str1-str2;
         } 

        总结

        本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消