strcpy的所谓正确写法:

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

char *strcat(char *strDest, const char *strSrc) {char *address = strDest;assert((strDest != NULL) && (strSrc != NULL));while(*strDest){strDest++; }while(*strDest++ = *strSrc++){}return address; }

这就是所谓的面试笔试最常见最常见的,而且经常被鄙视的strcpy
头文件:string.h
功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
好了,不说这四行代码到底为什么这么写,内事不决问百度去。
单说函数本身,传入的是两个指针,第二个是常指针,但是一个必须满足的条件是第一个参数必须传入一个char[]数组,而不可能是一个

char *a="fewfa";

这样的一个指针,或者更sb的是一个空指针

char *a;

字符数组初始化的时候要分配长度,不分配会默认,C#还是可以再次分配,不说这个,我的意思是说,我既然要拷贝一个字符串,那我怎么知道字符串多长!10w,百千,还是更多,那这个方法是不是在某些场合不适应,还有strcat,同样的问题,参数必须是一个足够大已经分配过内存的指针,如果没有分配足够内存,会出错。

荡漾了,写一个strcat(仅个人意见)

#include<stdio.h>
#include <stdlib.h>
#include <assert.h>
char* strcat(char * strDest,const char * strSrc)
{char *from=strDest;const char *source=strSrc;assert((strDest!=NULL) && (strSrc !=NULL));int length=0;while(*strDest!='\0') { strDest++;length++;} char * ret=(char *)malloc(length);char *back=ret;while(*(from)!='\0'&&(*ret++ = *from++)) {}while((*ret++ = *source++)!='\0') {}return back;
} void main()
{char *a="fherweufashjewadfa";char *b="uiorewgfagipobagbi";char *c=strcat(a,b);int d=0;printf("%s\n",c);scanf("%d",d);
}

转载于:https://www.cnblogs.com/fish124423/archive/2012/07/31/2616920.html

C strcpy和strcat相关推荐

  1. 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove

    模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove ================================ 1 strstr 字符 ...

  2. C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结

    1.常见字符串相关操作 我们知道有strlen. strcpy.strcat.strcmp.这样一一系列函数 2.实现Demo #include <stdio.h> #include &l ...

  3. C/C++实现strcpy和strcat两个功能

    strcpy和strcat是string.h头文件中分别实现字符串数组拷贝与拼接功能的函数,详细使用相信大家都了解了,如果还不了解看看实例 C/C++笔试必须熟悉掌握的头文件系列(四)--string ...

  4. (C语言)常用的字符串函数介绍(strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen)非常详细

    理解 strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen这些函数,可以帮助我们更好的对字符串进行操作,做到玩转字符串. 目录 1.s ...

  5. C语言字符串库函数strcpy,strncpy,strcat,strncat,ctrcmp,strncmp的简介与实现

    目录 一.C语言部分字符串库函数的介绍 1.strcpy函数的介绍 2.strncpy函数的介绍 3.strcat函数的介绍 4.strncat函数的介绍 5.strcmp函数的介绍 6.strncm ...

  6. C语言库函数的实现(strlen strcpy strcmp strcat strstr)

    库函数的实现 strlen strcpy strcmp strcat strstr assert函数 头文件:assert.h 又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的 ...

  7. C基础--字符串操作函数(strlen,strcpy,strcmp,strcat,strstr,strtok,strchr)

    #include <stdio.h> #include <string.h> int main(void) {//char dest[10];//#define NULL (v ...

  8. 用c语言编程实现strcpy,用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove

    1.模拟实现strcpy #include #include #include #include char *my_strcpy(char *dst, const char *src) { asser ...

  9. 字符串函数实现(strlen,strcpy,strcmp,strcat,strrev)

    声明:以下代码可能并非最佳方法,若有错误疑问欢迎提出!!! strlen函数 #include<stdio.h> #include<string.h>int mylen(cha ...

最新文章

  1. 嵌入式开发在过去20年中是如何演变的
  2. 【c++】重载操作符
  3. python初学者教程我要自学网-我要自学网--json 数据解析-python。
  4. qt中关闭窗口资源释放问题
  5. [HNOI2009]最小圈 (二分答案+负环)
  6. linux 用户进程结束后 malloc申请的内存会自动释放吗,进程退出后malloc的内存是否会被释放?
  7. byte 类型比较_C++数据类型回顾
  8. Java加密与解密的艺术~DigestInputStream
  9. easyui源码翻译1.32--SearchBox(搜索框)
  10. 别停特斯拉旁边!特斯拉车辆自燃全车烧毁 连旁边的奥迪都没放过...
  11. Linux系统中输入输出管理
  12. 程序员如何坚持写作? 1
  13. 【java版坦克大战---准备篇】 java 绘图
  14. 纯新手DSP编程--5.15--CCS简述
  15. EasyRecovery,重新找寻丢失的文件
  16. 计算机键盘正确指法操作方法,键盘指法,图文详解键盘指法练习方法
  17. PIN/PAD Design in SoC - 2 (待续)
  18. 深度解析dubbo在线运维Qos
  19. 七问西方主流经济学,考考你的经济学常识
  20. win7系统安装telnet服务器,Win7怎样安装telnet服务?

热门文章

  1. 子选择器与后代选择器的区别
  2. 扩展gcd codevs 1200 同余方程
  3. 基于JQUERY使用FLASH的AJAX上传进度条插件uploadify
  4. WebService(1)名词了解
  5. centos 并发请求数_Linux Shell多进程并发以及并发数控制
  6. linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...
  7. 1.2 线性回归与梯度下降-机器学习笔记-斯坦福吴恩达教授
  8. C/C++ 整型提升(Integral Promotion)
  9. 解决NIOS II工程拷贝后无法编译问题
  10. leetcode11盛最多水的容器