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

以下是对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++)!='');
  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结尾处的'')并添加''。
说明
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!='')的简化形式
  {
    //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
    //那么strDest将指向''的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
    //向该字符串的结束标志''。
    strDest++;
  }

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

时间: 2024-11-02 18:07:09

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

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

strcpy原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include <string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.返回指向dest的指针.函数实现: 复制代码 代码如下: /********************** * C语言标准库函数strcpy的一种典型的工业级的

c语言中字符串分割函数及实现方法_C 语言

1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

c语言中字符串处理函数详解

C语言提供了丰富的字符串处理函数,例如字符串的输入.输出.合并.修改.比较.转换.复制.搜索等,使用这些现成的函数可大大减轻编程的负担. 用于输入输出的字符串函数,例如printf.puts.scanf.gets等,使用时应包含头文件stdio.h,使用其它字符串函数则应包含头文件string.h. 1.字符串长度函数strlen strlen 是 string length 的缩写,用来获得字符串的长度.所谓长度,就是包含多少个字符(不包括字符串结束标志 '\0').语法格式为: strlen

基于PHP中的常用函数回顾

以下是对PHP中的常用函数进行了详细的分析介绍,需要的朋友可以参考下   array_change_key_case - 返回字符串键名全为小写或大写的数组 array_chunk - 将一个数组分割成多个 array_combine - 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values - 统计数组中所有的值出现的次数 array_diff_assoc - 带索引检查计算数组的差集 array_diff_key - 使用键名比较计算数组的差集

C语言中字符串和数字的相互转换实现代码

以下是对C语言中字符串和数字的相互转换实现代码进行了分析介绍,需要的朋友可以参考下   1.数字转换为字符串sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出. sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... ); 除了前两个参数类型固定外,后面可以接任意多个参数. printf 和sprintf 都使用格式

推荐ASP中VBScript常用函数_FSO专题

/*-------------------ASP文档参考集-----------------------*/ *-->作者:草履虫 *-->时间:2007-4.28---2007-4.30(原来是自己编写的手册,现在发在这里) *-->联系:caolvchong@gmail.com *-->文档功能: 1.复习了ASP,加深了对ASP结构的理解和ASP的体会 2.可以用来做ASP参考,自己写的,参考起来更方便 这是第五部分:ASP中VBScript常用函数 /*----------

MySQL中的常用函数_Mysql

在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update.delete语句中. 常用的函数有: 1. 字符串函数:主要用于处理字符串. 2. 数值函数:主要用于处理数字. 3. 日期和时间函数:主要用于处理日期和事件. 4. 系统信息函数:获取系统信息. 1. 使用字符串函数: 虽然每种数据库都支持SQL,但是每种数据库拥有各自所支持的函数. 1.1 合并字符串函数concat() 和 concat_ws(): 在MySQL中可以通过函数concat()和con

推荐ASP中VBScript常用函数

/*-------------------ASP文档参考集-----------------------*/ *-->作者:草履虫 *-->时间:2007-4.28---2007-4.30(原来是自己编写的手册,现在发在这里) *-->联系:caolvchong@gmail.com *-->文档功能: 1.复习了ASP,加深了对ASP结构的理解和ASP的体会 2.可以用来做ASP参考,自己写的,参考起来更方便 这是第五部分:ASP中VBScript常用函数 /*----------

PHP SPL标准库中的常用函数介绍

  这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三个函数,需要的朋友可以参考下 PHP SPL标准库中提供了一些函数用来处理如自动加载.迭代器处理等. spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 spl_autoload_register()注册函数到SPL __autoload函数栈中