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/c++实现strncpy函数相关推荐

  1. 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多

    strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...

  2. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  3. linux c之strncpy函数和strncmp函数最简单使用总结

    1.原型声明: char * strncpy(char *dest,const char *src, size_t n); strncmp() 用来比较两个字符串的前n个字符,区分大小写,其原型为: ...

  4. java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用

    C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...

  5. 再谈strncpy函数--值得一看的好文章

    strncpy()函数 原型:char*strncpy(char *dest, char *src, int n);     用法:#include<string.h>     功能:把s ...

  6. c语言字符串提取第二个字符,c语言如何复制字符串(取前n个字符)strncpy()函数的应用实例...

    c语言如何复制字符串(取前n个字符)strncpy()函数的应用实例.函数需引入的头文件:#include 定义strncpy()函数:char * strncpy(char *dest, const ...

  7. 随想录(用memmove函数代替strncpy函数)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有过C语言编程的朋友应该都有过指针越界的困扰.不管越界的地方是全局地址.还是局部地址,查起来都是 ...

  8. strncpy()函数详解

    strncpy()函数 原型:extern char *strncpy(char *dest, char *src, int n);     用法:#include <string.h>  ...

  9. C语言之strncpy函数

    [FROM MSDN && 百科] 原型:char * strncpy(char *dest, char *src, size_t n); #include<string.h&g ...

  10. strcpy()、strncpy()函数

    本片博客简单写下关于strcpy().strncpy()两函数的用法.区别及使用时需要注意的地方. 一.使用介绍 1. strcpy()函数用法 char * strcpy ( char * dest ...

最新文章

  1. 进程间通信学习小结(共享内存)
  2. 操作系统结构-层次式结构
  3. 《黑马程序员》认识OC的第一个程序(Objective-c)
  4. jpa 使用jdbc_在JPA和JDBC中使用存储过程。 嗯,只要使用jOOQ
  5. java中逗号怎么加_Java中如何将字符串从右至左每三位加一逗号
  6. ubuntu 16.0.4如何配合网卡,
  7. GNU make manual 翻译(八十二)
  8. 咸鸭蛋吃了对身体有什么好处?
  9. JAVA 基于websocket实时通信的实现—GoEasy
  10. 盛京剑客系列17:市场暴跌下投资组合的调整
  11. linux免费商用字体,免费可商用字体~文泉驿正黑体
  12. mt4怎么用云服务器跟单,免费好用的跟单系统 神速MT4跟单ea系统使用教程
  13. 电脑QQ登录后将显示的界面由“空间”改为“消息”
  14. nmap扫描之端口“filtered“被过滤的分析
  15. 在ppt中怎么加入倒计时 里面怎么加入倒计时【方法】
  16. php excel库,phpexcel类库下载
  17. 史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)
  18. 惠普台式机电源风扇不转
  19. 轴承故障诊断之时域指标
  20. Centos7 配置netatalk搭建mac Time Machine

热门文章

  1. 片上变化(on chip variation,OCV)概念学习
  2. manifest.json 解析--手机web app开发笔记(三-1)
  3. Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0编译
  4. C# 倍福ADS的正确打开方式,使用AdsRemote组件优雅的通过ADS通讯
  5. mysql回滚工具_MySQL回滚工具binlog2sql使用介绍
  6. Flink 怎么部署安装?
  7. windows sublime格式化json快捷键
  8. 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨)为什么很多人说崖山海战以后无中国
  9. shp文件转kml方式
  10. java短信判断长度_接收短信验证码条数限制(java发送短信验证码限制)