strcpy不受长度限制的字符串函数,strncpy受长度限制
查阅资料比较strncpy比strcpy多一个长度n的参数去控制copy的长度,
两个函数都返回被copy的字符串的地址。
下面简单实现
strcpy的实现
char* my_strcpy(char* str, const char* source) { assert(source&&str);//判断 char* ret = str;//纪录被copy的初始地址 while (*str++ = *source++); //当'\n'赋值过去的时候,为假,结束循环赋值结束 return ret; }
strncpy的实现
char* my_strncpy(char* str, const char* source,int n) { assert(source&&str);//判断 char* ret = str;//纪录被copy的初始地址 while ((*str++ = *source++) && --n); //用n来纪录copy的字符数量 return ret; }
通过比较可以发现strncpy相对于strcpy来说更为细致,strncpy
可以完成一些strcpy无法完成的任务
样例
在这里插#include <iostream> using namespace std; #include <string> #include <assert.h> char* my_strncpy(char* str, const char* source,int n) { assert(source&&str); char* ret = str;//纪录被copy的初始地址 while ((*str++ = *source++) && --n); //用n来纪录copy的字符数量 return ret; } int main() { char a[] = "abcab"; char b[] = "xxxxxxxxxx"; cout << my_strncpy(b, a,3) << endl; cout << b; return 0; }
运行结果