C/C++实现strcpy和strcat两个功能
来源:互联网 发布:图片html源码怎么看 编辑:程序博客网 时间:2024/06/16 03:20
strcmp和strcat是string.h头文件中分别实现字符串数组拷贝与拼接功能的函数,详细使用相信大家都了解了,如果还不了解看看实例 C/C++笔试必须熟悉掌握的头文件系列(四)——string.h/cstring就知道怎么使用了。
下面我们直接来看看具体实现:
1 strcpy实现
char* myStrcpy(char* pre, const char* next){ if (pre == nullptr || next == nullptr) //空指针直接返回 { return nullptr; } if (pre == next) // 两者相等也无需拷贝了 return pre; while ((*pre++ = *next++) != '\0'); // 依次赋值给主字符数组 return pre;}
上面程序实现了strcpy的程序,实现很简单依次赋值给朱字符数组即可,当遇到next指向字符串结束字符’\0’后,完成赋值并且停止赋值。这样新赋值的’\0’就成了字符数组表示的字符串结尾符,哪怕主字符串pre比next长也会戛然而止。字符串判断不管字符数组存了啥,它只认到’\0’前的数是它的主体核心部分。
2 strcat实现
char* myStrcat(char* pre, const char* next){ if (pre == nullptr || next == nullptr) // 如果有一个为空指针,直接返回pre return pre; char* tmp_ptr = pre + strlen(pre); //strlen计算字符数,需要包含都文件string.h,当然也可以自己实现 while ( (*tmp_ptr++ = *next++) != '\0'); // 依次接着赋值 return pre;}
上面程序实现了strcat拼接的功能,主要依靠新申请的一个指针先指向主字符数组的尾部,然后依次将另个字符数组字符赋值给后面的空间(可能有些人有疑惑,为什么没有申请额外空间就直接使用后面的空间,实际上这个是简版的写法,所以要求传入指针pre指向的字符数组有足够大的空间,看下面完整程序你就明白了。)
3 主程序
#include<iostream>#include<string>#include<string.h>using namespace std;char* myStrcat(char* pre, const char* next){ if (pre == nullptr || next == nullptr) return pre; char* tmp_ptr = pre + strlen(pre); while ( (*tmp_ptr++ = *next++) != '\0'); return pre;}char* myStrcpy(char* pre, const char* next){ if (pre == nullptr || next == nullptr) { return nullptr; } if (pre == next) return pre; while ((*pre++ = *next++) != '\0'); return pre;}int main(){ char str1[100] = "12345"; char str2[20] = "hello world"; myStrcat(str1, str2); myStrcpy(str1, str2); printf("%s\n", str1); return 0;}
个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
转载请注明出处:http://blog.csdn.net/FX677588/article/details/76702319
阅读全文
0 0
- C/C++实现strcpy和strcat两个功能
- 模拟实现C库函数:strcpy和strcat
- c 语言之 模拟实现 strcpy 和 strcat 函数
- C 实现strcmp,strcpy,strcat函数
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- 用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
- C语言 strcat与strcpy
- C/C++实现strcpy,strcat,strlen,strcmp标准实现代码
- c语言实现strcpy功能
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现
- C和指针之字符串简单实现 strcpy、strcat、strstr函数
- C基础:strcat,strcmp,memcpy,strcpy等函数的实现
- C语言strlen, strcpy, strcmp,strcat函数的实现
- strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现
- C语言中模拟实现strcpy,strstr,strcat函数
- 【C语言】模拟实现strcpy、strcat、strcmp函数
- C语言模拟实现strcpy、strlen、strcmp、strcat
- C语言:模拟实现strlen、strcpy、strcmp、strReverse、strcat函数
- Python之拷贝对象
- 百练2792:集合加法
- 线程的私有数据(TSD)
- 设计模式C++实现(11)——装饰模式
- Android开发 sharesdk分享微信/朋友圈的时候只显示文字,不显示链接
- C/C++实现strcpy和strcat两个功能
- Java多线程的两种实际应用
- android中捕获全局异常
- poj 2409 Let it Bead(polya)
- VMware虚拟机过卡-解决办法(Win10系统)
- 关系型数据库与非关系型数据库的区别?
- 使用阿里云ecs搭建网站
- mysql 下计算两点经纬度之间的距离
- hdu 1231 最大连续子序列