首页 > 编程知识 正文

如何用函数实现分列,用c语言实现strcpy函数

时间:2023-05-05 12:11:33 阅读:286546 作者:3782

strncpy函数介绍

1:strncpy是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, const char *src, int n),把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。

2:函数原型char *strncpy(char *dest,char *src,size_t n);

3:(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_t n的值决定。如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加'',也就是结果dest不包括'',需要再手动添加一个''。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+''。

4:strcpy只是复制字符串,但不限制复制的数量,很容易造成缓冲溢出。strncpy要安全一些。strncpy能够选择一段字符输出,strcpy则不能。

5:具体代码实现如下:

#include<iostream>using namespace std; char *my_strncpy(char *strDest, const char *strSrc, size_t n) //对源字符串不希望其修改,所以加上const来修饰{ char *address = strDest; if ( (NULL != strDest) && (NULL != strSrc) && (strDest != strSrc) && (0 < n) ) { while( n-- && ''!=( *strDest++ = *strSrc++ ) ) { // do nothing } } *strDest=''; return address;} int main(){ char *strSrc = "hello,world"; char *strDest = new char[20]; cout << strSrc << endl; strDest = my_strncpy(strDest, strSrc, 5); cout << strDest << endl;strDest = my_strncpy(strDest, strSrc, 8); cout << strDest << endl;strDest = my_strncpy(strDest, strSrc, strlen(strSrc)); cout << strDest << endl; return 0;}

 运行结果截图如下:

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。