strncpy原型:char* strncpy(char* dest,const char* src,size_t count);
函数说明:1、当count <= strlen(src)+1(包括'\0')逐个将src中count个字符赋予dest,包括'\0'2、当count > strlen(src)+1时将src字符(包括'\0')全部赋予dest,不够的补'\0'赋予dest3、当count的大小超过dest的存储空间,则程序崩溃#include <iostream>
#include <cstring>
#include <cstddef>
#include <assert.h>
char* my_strncpy(char* dest,const char* src,size_t count);
int main()
{const char* src = "sch";char dest[] = "sdvnlskndvlsfghnd";int num = strlen(dest)+1;strncpy(dest,src,0);  for(int i=0;i<num;i++){if(dest[i])printf("%c",dest[i]);elseprintf("\\0");}printf("\n");return 0;
}
char* my_strncpy(char* dest,const char* src,size_t count)
{assert(NULL!= dest && NULL!= src);char* pdest = dest;int num_src = 0 ;while(src[num_src++]!='\0');//num_src = strlen(src) + 1;if(count <= num_src){while(count--)*dest++ = *src++;}else{int temp = count - num_src;while(num_src--)*dest++ =  *src++;while(temp--)*dest++ = '\0';}return pdest;}

总之一句话,就是将src指向的字符赋予dest,不够的在后面补'\0'。

不过strncpy在使用的时候有几点很容易出错的地方:

1、如果dest的内存空间不够存放count个字节内容,出现崩溃。

2、当count个字符恰好将dest内存占满时,也就是说,dest后面不会有‘\0’,此时用printf或者cout输出字符串时,会出现乱码现象。

所以一般来说,最好采用如下方式:

char fullname[MAX];

strncpy(fullname,s,MAX-1);

 fullname[MAX-1] = '\0';

转载于:https://www.cnblogs.com/welsh-android-learning/archive/2013/04/27/3046737.html

c字符串函数实现(1)---strncpy相关推荐

  1. 常用字符串函数的使用

    目录 一.求字符串长度 1.strlen用来计算字符串的长度(该长度不包括'\0') 二.长度不受限制的字符串函数 1.strcpy字符串拷贝 2.strcat附加一个字符串 3.strcmp字符串大 ...

  2. C语言进阶——字符函数和字符串函数

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:C语言从入门到进阶 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  3. 基于字符函数和字符串函数的研究

    求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符串查找 strstr s ...

  4. 编程之美-字符串函数

    文章目录 字符串函数 求字符串长度 原格式 1.计数器方法 2.递归 3.指针-指针 ==长度不受限制==的字符串函数 strcpy字符串拷贝 原格式 开始分析 strcat字符串追加 原格式 开始分 ...

  5. 字符串函数以及内存函数概述

    本人能力有限,难免有叙述错误或者不详细之处!希望读者在阅读时可以反馈一下错误以及不够好的地方!感激不尽! 目录 求字符串长度: strlen 长度不受限制的字符串函数: strcpy,strcat,s ...

  6. 用C语言模拟实现字符函数与字符串函数

    用C语言模拟实现字符函数与字符串函数 strncat.strncpy.atoi 若使用本文相关代码,还请动手点个赞!!! #define _CRT_SECURE_NO_WARNINGS 1 #incl ...

  7. C语言之字符串探究(五):N系列字符串函数——strncpy、strncat、strncmp

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  8. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  9. 【C】模拟实现strlen,strcpy,strcat,strcmp,strncpy,syrcat,strnact,strncmp,strstr等字符串函数

    目录 字符串函数模拟实现 1.strlen模拟实现 2.strcpy模拟实现 3.strncpy模拟实现 4.strcat模拟实现 5.strncat模拟实现 6.strcmp模拟实现 7.strnc ...

最新文章

  1. android zxing作用,Android / ZXing不再有效
  2. 美国本科计算机专业,美国本科计算机专业的最新排名介绍
  3. 使用windows自带远程桌面远程办公
  4. iBatis resultMap出错 The error happened while setting a property on the result object 解决办法
  5. fifo java_java – 如何保证ThreadPoolExecutor中的FIFO执行顺序
  6. Silverlight 4之旅(三)数据绑定(中)
  7. pmd 设置默认规则,只要使用了该规则集就自动使用
  8. 八点建议写出优雅的 Java 代码
  9. Python学习笔记 使用matplotlib创建Gif动图
  10. shuipfcms二次开发之图片上传
  11. HNUST OJ 2292 烟花易逝
  12. 看腻了杨幂,热巴,快来抓取上千张美女图片,古装美女看个够
  13. 23_字符串的格式化_format 函数_% 占位符 _ f-string _Template _模板字符等
  14. 测试理论-测试用例设计 (一) --- 正交表分析法
  15. 如何解决Mac电脑浏览器网页自动放大的问题?
  16. 当前商务日语教材的现状及其建设建议
  17. 语义化的理解:有哪些语义化标签?有什么作用?
  18. 超级产品:用户只看不买的网红书店,为什么还没破产?
  19. PTA7-1 厘米换算英尺英寸
  20. “98五笔字型输入法”大批量造词 (转)

热门文章

  1. 微博json文件_python 爬取微博评论 !
  2. JZOJ 5932. 【NOIP2018模拟10.27】情报中心
  3. 由于c语言是由字符流组成的,C语言试题及答案
  4. java的flush方法_Java中的BufferedWriter flush()方法及示例
  5. mysql中find_in_set_mysql中find_in_set()函数的使用详解
  6. 这台计算机怎么磁盘清理,电脑硬盘满了怎么清理(教你3招彻底清理内存,瞬间多出几十个G)...
  7. unity3d显示c4d材质_C4D小白最常踩的9个坑,看看你中招了没?
  8. 珠心算测试(c++版)
  9. 2019-11-23 Modern Family Scripts (01 “Pilot”)
  10. CentOS7安装配置redis5.0.5