C strcpy和strcat
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相关推荐
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove ================================ 1 strstr 字符 ...
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
1.常见字符串相关操作 我们知道有strlen. strcpy.strcat.strcmp.这样一一系列函数 2.实现Demo #include <stdio.h> #include &l ...
- C/C++实现strcpy和strcat两个功能
strcpy和strcat是string.h头文件中分别实现字符串数组拷贝与拼接功能的函数,详细使用相信大家都了解了,如果还不了解看看实例 C/C++笔试必须熟悉掌握的头文件系列(四)--string ...
- (C语言)常用的字符串函数介绍(strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen)非常详细
理解 strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen这些函数,可以帮助我们更好的对字符串进行操作,做到玩转字符串. 目录 1.s ...
- C语言字符串库函数strcpy,strncpy,strcat,strncat,ctrcmp,strncmp的简介与实现
目录 一.C语言部分字符串库函数的介绍 1.strcpy函数的介绍 2.strncpy函数的介绍 3.strcat函数的介绍 4.strncat函数的介绍 5.strcmp函数的介绍 6.strncm ...
- C语言库函数的实现(strlen strcpy strcmp strcat strstr)
库函数的实现 strlen strcpy strcmp strcat strstr assert函数 头文件:assert.h 又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的 ...
- C基础--字符串操作函数(strlen,strcpy,strcmp,strcat,strstr,strtok,strchr)
#include <stdio.h> #include <string.h> int main(void) {//char dest[10];//#define NULL (v ...
- 用c语言编程实现strcpy,用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
1.模拟实现strcpy #include #include #include #include char *my_strcpy(char *dst, const char *src) { asser ...
- 字符串函数实现(strlen,strcpy,strcmp,strcat,strrev)
声明:以下代码可能并非最佳方法,若有错误疑问欢迎提出!!! strlen函数 #include<stdio.h> #include<string.h>int mylen(cha ...
最新文章
- 嵌入式开发在过去20年中是如何演变的
- 【c++】重载操作符
- python初学者教程我要自学网-我要自学网--json 数据解析-python。
- qt中关闭窗口资源释放问题
- [HNOI2009]最小圈 (二分答案+负环)
- linux 用户进程结束后 malloc申请的内存会自动释放吗,进程退出后malloc的内存是否会被释放?
- byte 类型比较_C++数据类型回顾
- Java加密与解密的艺术~DigestInputStream
- easyui源码翻译1.32--SearchBox(搜索框)
- 别停特斯拉旁边!特斯拉车辆自燃全车烧毁 连旁边的奥迪都没放过...
- Linux系统中输入输出管理
- 程序员如何坚持写作? 1
- 【java版坦克大战---准备篇】 java 绘图
- 纯新手DSP编程--5.15--CCS简述
- EasyRecovery,重新找寻丢失的文件
- 计算机键盘正确指法操作方法,键盘指法,图文详解键盘指法练习方法
- PIN/PAD Design in SoC - 2 (待续)
- 深度解析dubbo在线运维Qos
- 七问西方主流经济学,考考你的经济学常识
- win7系统安装telnet服务器,Win7怎样安装telnet服务?
热门文章
- 子选择器与后代选择器的区别
- 扩展gcd codevs 1200 同余方程
- 基于JQUERY使用FLASH的AJAX上传进度条插件uploadify
- WebService(1)名词了解
- centos 并发请求数_Linux Shell多进程并发以及并发数控制
- linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...
- 1.2 线性回归与梯度下降-机器学习笔记-斯坦福吴恩达教授
- C/C++ 整型提升(Integral Promotion)
- 解决NIOS II工程拷贝后无法编译问题
- leetcode11盛最多水的容器