C语言中字符串常用函数strcat与strcpy的用法介绍

 更新时间:2013年07月11日 10:35:21   作者:  
以下是对C语言中字符串常用函数strcat与strcpy的使用方法进行了详细的分析介绍,需要的朋友可以参考下
strcpy原型声明:extern char *strcpy(char* dest, const char *src);
头文件:#
include <string.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
函数实现:
复制代码 代码如下:

/**********************
 * C语言标准库函数strcpy的一种典型的工业级的最简实现
 * 返回值:目标串的地址。
 * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
 * 参数:
 * strDestination 目标串
 * strSource 源串
 ***********************/

 char *strcpy(char *strDestination,const char *strSource)
 {
   assert(strDestination!=NULL && strSource!=NULL);
   char *strD=strDestination;
   while ((*strD++=*strSource++)!='\0');
   return strDestination;
 }

 /*
 GNU-C中的实现(节选):
 */
 char* strcpy(char *d, const char *s)
 {
   char *r=d;
   while((*d++=*s++));
   return r;
 }
 /* while((*d++=*s++)); 的解释:两层括号是为了取赋值表达式的值,
       而赋值表达式的值为左操作数,所以在复制NULL后,循环停止 */

strcat原型
extern char *strcat(char *dest,char *src);
用法
#include <string.h>
在C++中,则存在于<cstring>头文件中。
功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
函数实现:
复制代码 代码如下:

//将源字符串加const,表明其为输入参数
char *strcat(char *strDest, const char *strSrc)
{
  // 后文return address,故不能放在assert断言之后声明address
  char *address = strDest;
  assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言
  while(*strDest)             //是while(*strDest!='\0')的简化形式
  {
    //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
    //那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
    //向该字符串的结束标志'\0'。
    strDest++;
  }

  while(*strDest++ = *strSrc++)
  {
    NULL;             //该循环条件内可以用++,
  }                   //此处可以加语句*strDest='\0';无必要
  return address;     //为了实现链式操作,将目的地址返回
}

相关文章

  • 如何基于C++解决RTSP取流报错问题

    如何基于C++解决RTSP取流报错问题

    这篇文章主要介绍了如何基于C++解决RTSP取流报错问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 实例解析C++设计模式编程中简单工厂模式的采用

    实例解析C++设计模式编程中简单工厂模式的采用

    这篇文章主要介绍了C++设计模式编程中简单工厂模式的采用实例,在简单工厂模式中程序往往利用封装继承来降低耦合度,需要的朋友可以参考下
    2016-03-03
  • C语言数据结构时间复杂度及空间复杂度简要分析

    C语言数据结构时间复杂度及空间复杂度简要分析

    我们在进行编程时,往往会开发诸多的算法,那么我们怎么在那么多算法中找到最好的那个呢?本文主要介绍时间和空间复杂度概念及时间复杂度的求解,预祝读者学习愉快
    2021-10-10
  • Qt编写地图综合应用之绘制覆盖物折线

    Qt编写地图综合应用之绘制覆盖物折线

    折线图目前应用最广的也是用来绘制各种轨迹,折线图其实就是后面动态轨迹图、飞机航线图的前身,公用的一个方法addPolyline。本文将教大家如何通过QT实现覆盖物折线图,快来学习吧
    2021-12-12
  • C++ Eigen库计算矩阵特征值及特征向量

    C++ Eigen库计算矩阵特征值及特征向量

    这篇文章主要为大家详细介绍了C++ Eigen库计算矩阵特征值及特征向量,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • C++语言数据结构 串的基本操作实例代码

    C++语言数据结构 串的基本操作实例代码

    这篇文章主要介绍了C语言数据结构 串的基本操作实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • Visual C++中Tab View的多种实现方法

    Visual C++中Tab View的多种实现方法

    这篇文章主要介绍了Visual C++中Tab View的多种实现方法,包括了CTabCtrl控件、CSheetCtrl标签选择窗口以及静态分割窗口等实现Tab View的方法,需要的朋友可以参考下
    2014-10-10
  • C语言运算符的重载详解

    C语言运算符的重载详解

    这篇文章主要为大家详细介绍C语言运算符的重载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C++编写实现飞机大战

    C++编写实现飞机大战

    这篇文章主要为大家详细介绍了C++编写实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解

    WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解

    这篇文章主要介绍了WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数,有助于读者更好的理解windows程序的消息机制,需要的朋友可以参考下
    2014-07-07

最新评论