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;}运行结果截图如下:
免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。