永发信息网

strncpy()函数的功能

答案:2  悬赏:70  手机版
解决时间 2021-05-15 06:18
C++中遇到的问题
最佳答案
char * strncpy(char *s1,char *s2,size_t n);
  将字符串s2中最多n个字符复制到字符数组s1中,返回指向s1的指针。
  注意:如果源串长度大于n,则strncpy不复制最后的'\0'结束符,所以是不安全的,复制完后需要手动添加字符串的结束符才行。
  Strcpy和Strncpy的区别- -
  第一种情况:
  char* p="how are you ?";
  char name[20]="ABCDEFGHIJKLMNOPQRS";
  strcpy(name,p); //name改变为"how are you ? "====>正确!
  strncpy(name,p,sizeof(name)); //name改变为"how are you ? " ====>正确!
  第二种情况:
  char* p="how are you ?";
  char name[10];
  strcpy(name,p); //目标串长度小于源串,错误!
  name[sizeof(name)-1]='\0'; //和上一步组合,弥补结果,但是这种做法并不可取,因为上一步出错处理方式并不确定
  strncpy(name,p,sizeof(name)); //源串长度大于指定拷贝的长度sizeof(name),注意在这种情况下不会自动在目标串后面加'\0'
  name[sizeof(name)-1]='\0'; //和上一步组合,弥补结果
  ================================================
  总结:strcpy
  源字串全部拷贝到目标字串中,包括'\0',但是程序员必须保证目标串长度足够,且不与源串重叠。
  strncpy
  如果目标长>=指定长>源长,则将源串全部拷贝到目标串,连同'\0'
  如果指定长<源长,则将截取源串中按指定长度拷贝到目标字符串,不包括'\0'
  如果指定长>目标长,错误!
全部回答

字符串复制函数

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宝宝夏天生痱子怎么办
微信转账在哪里,微信转账限额多少 微微信转账
武昌区马应龙肛肠医院在什么地方啊,我要过去
武穴市美的电器这个地址怎么能查询到,着急去
父母教诲的格言,两句有关孝敬父母的名言
谁有CSOL盗号软件和教程
大冶市爱亲母婴生活馆这个地址怎么能查询到,
为什么我越伤心越想听悲殇的歌?
爱情天注定的句子,形容天蒙蒙亮的句子
说别人是四眼狗侵犯了那个人的什么权
古剑奇谭 优化问题啊
工伤10级能赔多少钱?
电脑问题怎么办啊求解啊
卢氏县大肉批发零售门市在哪里啊,我有事要去
沈阳朝阳区到北京做客车需要多少钱
推荐资讯
望城区中通快递地址是什么,有没有知道的
翼年代记人气怎么样
关于热爱生命的段落,名人热爱生命的片段80字
笔记本电脑不用上网卡能上网不
宾县红十字会医院怎么去啊,谁知道地址啊
地下城与勇士点亮图标需要转职么?
如何判断一段网页代码是不是病毒?
宁远县宝宝乐母婴批发零售怎么去啊,谁知道地
生存之路怎么玩
汉川市好兆头牛肉面馆地址有谁知道?有点事想
白色的婚纱代表什么呀?
成人拉丁舞和少儿拉丁舞教程一样吗?有什么区
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?