与strncpy的区别
第一种情况:
1
2
3
4
    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 ?" =====>正确!后续的字符将置为NULL
第二种情况:
1
2
3
4
5
6
    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 和 strnpy 区别的更多相关文章

  1. wcscpy wcscpy_s strcpy strcpy_s的区别

    原型声明:extern char *strcpy(char *dest,const char *src); 头文件:string.h 功能:把从src地址开始且含有NULL结束符的字符串赋值到以des ...

  2. C++:memset ,memcpy 和strcpy 的根本区别!

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h&g ...

  3. C/C++的mem函数和strcpy函数的区别和应用

    mem系列函数是面试的时候常考的知识点,我们需要熟练掌握这三个函数的原理和代码实现,要能准确无误的写出代码. memcpy.memset和memset三个函数在使用过程中,均需包含以下头文件: //在 ...

  4. char *直接赋值和strcpy之间什么区别

    赋值是两个指针指向同一个位置. 而strcpy则是把内容拷贝了一份给另个一指针.

  5. [VC]strcpy memcpy memset区别与简介

    strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...

  6. strcpy、strncpy、memcpy的区别

    一.strcpy.strncpy区别 struct gpInfo { char gpcode[9]; char gpName[50]; }; string gpstr = "SZ000001 ...

  7. strcpy(),strcat()的用法

    strcpy(): 定义一个字符串char a[20],和一个字符串c[]="i am a teacher!"; 把c复制到a中就可以这样用:strcpy(a,c); 这个函数包含 ...

  8. strlen() 和 strcpy()函数

    strlen() 和 strcpy()函数的区别,这两个一个是返回一个C风格字符串的长度,一个是对一个C风格字符串的拷贝,两个本来功能上是不同的,此外,他们还有一些细小的区别:strlen(" ...

  9. memmove和memcpy函数的区别及实现

    一.memmove()和memcpy()函数和strcpy()函数的区别: (1)使用的类型不同,strcpy()函数只对字符串进行操作:memmove()和memcpy()函数对所有类型都适用,为内 ...

随机推荐

  1. cocos2dx游戏开发——微信打飞机学习笔记(十)——碰撞检测的搭建

    一.七说八说        大家都发现了= =,做了那么多,发现就是摆设,完全没有打飞机的感觉,没有实现碰撞的监测.比如说呢,子弹和敌机,玩家与敌机就是需要有碰撞检测的说,然后在这篇我想会很长很长的教 ...

  2. isnull的使用方法

    is null 查看列数据为空 select*from lrb where lrid is null   ISNULL使用指定的替换值替换 NULL. 语法ISNULL ( check_express ...

  3. CDH 的Cloudera Manager免费与收费版的对比表

    CDH 特性 免费版 付费版 Deployment, Configuration & Management 系统管理 Automated Deployment & Hadoop Rea ...

  4. Android 电池电量进度条,上下滚动图片的进度条(battery)

    最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条.我就自定义view实现了电量进度条.修改图片就可以达到自己想要的 ...

  5. jmeter之调度器配置

    Jmeter的线程组设置里有一个调配器设置,用于设置该线程组下脚本执行的开始时间.结束时间.持续时间及启动延迟时间.当需要半夜执行性能测试时会用到这个功能. ps:设置调度器配置,需要将前面的循环次数 ...

  6. CodeForces 304C

    E - E Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  7. 用SQL语句添加删除修改字段

    1.增加字段     alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNc ...

  8. Xamarin Android设置界面提示类型错误

    Xamarin Android设置界面提示类型错误 错误信息:Integer types not allow (at ‘padding’ with value ’10’)Android界面属性的长度和 ...

  9. 如何找到所有HTML Select 标签的选中项?

    $(‘[name=NameofSelectedTag]:selected’);

  10. BZOJ3743 : [Coci2014]Kamp

    d[x][0]表示x点向下走且回到x点的最少代价 d[x][1]表示x点向下走但不回到x点的最少代价 d[x][2]表示x点向下走的最长路 d[x][3]表示x点向下走的次长路 u[x][0]表示x点 ...