strcpy,即string copy(字符串复制)的缩写。
原型声明:char *strcpy(char *dest, const char *src);
头文件:#include <string.h>#include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针(返回类型char*)。

不使用C/C++标准库函数,进行字符串复制函数的编写:

#include <stdio.h>
#include <malloc.h>
#include <assert.h>void stringcpy(char* to, const char* from) {assert(to != NULL && from != NULL);while (*from != '\0') {*to++ = *from++;}*to = '\0';
}int main(void) {char* t = (char*)malloc(15);char* f = (char*)malloc(15);stringcpy(f, "abcdefg");stringcpy(t, f);printf("%s\n", t);printf("%c\n", t[0]);free(t);free(f);getchar();return 0;
}

运行结果:

详解:
① assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。

*to++ = *from++先赋值再各自自增。
*p++先执行++再执行*,分三步(*++都是同级运算符,右结合)
(1)先执行p++,因为是后置,先用p
(2)再执行 *p, 取p所指的内容;
(3)最后再让p++,让p的地址加一个单位。
注意:++*p(*p)++都是取p所指对象的值加1。

*to = '\0'补上结束符,否则会乱码,如图。

char* t = (char*)malloc(15)使用 malloc 向堆动态申请内存;由于 malloc 返回类型为(void*),故用(char*)转换类型;char 为字符型变量,占1字节,此处申请了15字节的内存空间。
注意:若已不再使用,需要用 free 手动释放由 malloc 申请的内存,防止内存泄漏。

sizeof(t)的结果为4,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位),对于32位编译器,char*占4字节。

strlen(t)的结果为7,strlen() 截取'\0'之前的字符串长度,其头文件为<string.h>

getchar()类似于C++中的system("pause"),用于生成运行结果后暂停,方便查看结果,否则运行窗口会一闪而过,输入回车后即可关闭窗口。

参考自《程序员面试宝典(第5版)》

C语言字符串复制函数strcpy()的编写与详解相关推荐

  1. 不调用C++/C字符串库函数,实现字符串复制函数strcpy

    已知strcpy的函数原型:char *strcpy(char *strDest,const char *strSrc),其中strDest是目的字符串,strSrc是源字符串.不调用C++/C的字符 ...

  2. 字符串复制函数strcpy的实现算法

    1,字符串复制,需要考虑三种情况: 目的字符串未被赋值,本身是个空串,源字符串存在. 目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字符扔 ...

  3. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    C语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strca ...

  4. 字符串复制函数strcpy()

    两个字符串变量不可以使用"="进行直接赋值,只能通用strcpy()函数进行赋值.strcpy是 string copy的缩写,即"字符串复制".他的原型是: ...

  5. C语言-字符串处理函数strcpy

    strcpy 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中.此处将source ...

  6. addslashes() php,PHP 字符串转义函数(addslashes,stripslashes)详解

    在PHP中,有两个函数与字符串的转义有关,他们分别是 addslashes 和 stripslashes. addslashes($string), 在指定的预定义字符前添加反斜杠 (\),用于为存储 ...

  7. c语言 字符串拷贝函数作用,C语言不使用strcpy函数如何实现字符串复制功能

    Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志&q ...

  8. C语言自定义字符串复制函数

    用C语简单实现一个字符串复制函数 /*============================================================================Name ...

  9. C语言字符串处理函数库

    C语言的字符串处理函数库包括复制函数.拼接函数.比较函数.搜索函数等,这些函数的声明都位于头文件<string.h>.使用这些函数时,需要使用#include<string.h> ...

最新文章

  1. mysql双机热备的实现
  2. linux usb学习笔记
  3. 将二维列表输出到excel
  4. Android系统进程Zygote启动过程的源代码分析(3)
  5. (三)Omniglot Dataset介绍
  6. 2019美赛A题—学习记录
  7. 用python编程分苹果_Python实现分苹果(递归)
  8. Win32扫雷(根据以前的控制台扫雷实现)
  9. java编程比赛_[阶段一]java基础编程比赛
  10. 【时间序列】时序分析实战之SARIMA、Linear model...
  11. Linux ffs()函数
  12. vue如何动态获取数据改变背景颜色和字体颜色以及获取图片
  13. FFMPEG的像素格式
  14. JDBC 第一章 JDBC概述
  15. ASPX页面AJAX调用ASPX后台
  16. rust大油田分解机_睡梦中,狂风起!大棚棉被刮翻了,卷帘机也连带吹坏了......
  17. LEDE/OpenWrt for TL-WDR5600(QCA956X)
  18. Linux环境安装nodejs
  19. 最长不重复子串python_寻找最长不重复子串
  20. 在配置hadoop3.1.3中出现的错误ERROR: Attempting to operate on yarn nodemanager as root ERROR

热门文章

  1. 神经网络matlab拟合,使用浅层神经网络拟合数据
  2. OO第三单元总结性博客
  3. javascript原型链初识
  4. C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
  5. nginx 301 302重定向跳转配置 (一般都做301,对seo好)
  6. JavaScript语法规则
  7. 空指针异常Null pointer access: The variable roleList can only be null at this location
  8. Free as in beer VS Free as in speech
  9. 以下说法错误的是()
  10. [vagrant]win7+vagrant2.0+vbox5.2启动集群