码迷,mamicode.com
首页 > 编程语言 > 详细

【总结】C语言中常见的字符串处理函数

时间:2015-11-18 18:07:14      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:c语言   空间   字符串   

-------------------------------------------------------------------------------------------

       C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数。如:

输入输出字符串,字符串的拷贝,连接,比较等操作函数。值得注意的是:在使用输入输出,即gets、

puts函数时应该引入头文件<stdio.h>。在使用其他操作函数时,引入头文件<string.h>。另外,在使用连

接和拷贝字符串函数时,必须保证目标字符数组剩余空间足够放下新字符串和字符串结束标志‘\0‘。

-------------------------------------------------------------------------------------------


C语言代码如下:

/*
**功能:把src中的字符串拷贝到dst中。串结束标志‘\0‘也一同拷贝。
**src,也可以是一个字符串常量。
*/
char* my_strcpy(char *dst, const char *src)
{
     assert(dst);
     assert(src);
    
     char *ret = dst;
    
     while (*dst++ = *src++)
     {
          ;
     }
     return (ret);
}



/*
**功能:把src的字符串连接到dst中字符串的后面,并删去dst后的串标志“\0”。
**本函数返回值是dst的首地址。
*/
char* my_strcat(char *dst, const char *src)
{
     assert(dst);
     assert(src);
     char *ret = dst;
     
     /*
     **寻找‘\0‘,即dst的最后一位
     */
     while (*dst)
     {
          dst++;
     }
     /*执行拷贝*/
     while (*dst++ = *src++)
     {
          ;
     }
     return (ret);
}


/* 
**功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
**字符串1=字符串2,返回值=0;
**字符串2〉字符串2,返回值〉0;
**字符串1〈字符串2,返回值〈0。
*/
int my_strcmp(const char *dst, const char *src)
{
     assert(dst);
     assert(src);
    
     while (*dst == *src)
     {
          if (*dst == ‘\0‘)
          {
               return (0);
          }
          dst++;
          src++;
     }
     if ((*dst - *src) > 0)
          return (1);
     else
          return (-1);
}


/*
**功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。
*/
int my_strlen(const char *dst)
{
     assert(dst);
    
     int ret = 0;
    
     while (*dst++)
     {
          ret++;
     }
     return (ret);
}


/*
**功能:判断src是否是dst的子串,如果是,则返回第一个相等字符的地址,否则返回NULL。
*/       
char* my_strstr(char *dst, char *src)
{
     assert(dst);
     assert(src);
     
     char *pdst = dst;
     char *psrc = src;
     char *tmp = NULL;
    
     if (*src == ‘\0‘)
          return (dst); 
     /*
     **如果第一个之后的字符不相等,
     **dst跳到第一次相等的下一个字符的位置。
     */
     while ((*pdst) && (*psrc))
     {
          tmp = pdst;
          
          while((*pdst == *psrc) && (*psrc))
          {
               pdst++;
               psrc++;
          }
          if (*psrc == ‘\0‘)
          {
               return (tmp);
          }
          else
          {
               pdst = tmp;
               psrc = src;
               pdst++;
          }
     }
     return (NULL);
}

 

--------------------------------------------------------------------------------------------

   干货小知识:(void *)可以接收任意类型的指针,但要想在次使用,必须进行强制类型转换。

--------------------------------------------------------------------------------------------

 

本文出自 “无名小卒” 博客,请务必保留此出处http://814193594.blog.51cto.com/10729329/1714371

【总结】C语言中常见的字符串处理函数

标签:c语言   空间   字符串   

原文地址:http://814193594.blog.51cto.com/10729329/1714371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!