必威体育Betway必威体育官网
当前位置:首页 > IT技术

用c/c++实现strncpy函数

时间:2019-09-04 02:41:04来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

strncpy

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个字符,不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+'\0'。

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-- && '\0'!=( *strDest++ = *strSrc++ ) )
	   {
		   // do nothing
	   }
   }
   *strDest='\0';
   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;
}

运行结果截图如下:

相关阅读

C++中strncpy函数和strncpy_s函数的使用及注意事项

在掌握了strcpy函数和strcpy_s函数之后,我们不可避免地会谈到strncpy函数和strncpy_s函数,其实这四个函数的功能几乎一致,就是对两个

strtok 和strtok_r 函数使用

strtok这个函数我们再熟悉不过了,因为我们要经常要和字符打交道,不可避免的要分割字符串连接字符串。那么我今天看一下分割字符串。

java中的析构函数

乍一看,java里面怎么还有这样的词语。其实:析构函数(destructor) 与  构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数

MATLAB数据导入(importdata函数)

编写程序时,有时需要从外部读入数据,这里介绍用importdata函数把数据导入MATLAB的方法。1.加载和显示图像文件 在MATLAB中建立一个

Excel中subtotal函数计算各种总计值的操作方法

Excel计算各种总计值的SUBTOTAL函数是如何使用的呢?具体该怎么去进行操作?今天,seo实验室小编就教大家在Excel中subtotal函数计算

分享到:

栏目导航

推荐阅读

热门阅读