1.strcpy()函数

原型声明:char *strcpy(char* dest, const char *src);

头文件:#include <string.h> 和 #include <stdio.h>

功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。

char a[],b[]={"COPY"};//定义字符数组a,bstrcpy(a,b);//将b中的COPY复制到a中

2.strncpy()函数

函数原型char *strncpy(char *dest,char *src,int size_t n);

功能:(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'。

#include<stdio.h>
#include<string.h>
int main(){
char name[]={"Chinanet"},dest[20]={};
strncpy(dest,name,3);
printf("%s\n",dest);
}

功能概括:简而言之,就是把src指向的字符串的前size_t n个字符(不包括\0,\0得自己手动加在*dest被复制之后)复制到dest指向的字符串中。如果要复制的*src的部分有\0,就把\0复制进去,之后就提前结束,即使没复制到第size_t n个字符也是。返回指向*dest的指针。

3.strcpy_s()函数

strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。

三个参数时:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );
两个参数时:
errno_t strcpy_s( char (&strDestination)[size], const char *strSource ); // C++ only

#include "stdafx.h"
#include<iostream>
#include<string.h>
using namespace std;void Test(void)
{
char *str1=NULL;
str1=new char[20];
char str[7];
strcpy_s(str1,20,"hello world");//三个参数
strcpy_s(str,"hello");//两个参数但如果:char *str=new char[7];会出错:提示不支持两个参数
cout<<"strlen(str1)"<<strlen(str1)<<"strlen(str)"<<strlen(str)<<endl;
printf(str1);printf("\n");
cout<<str<<endl;
} int _tmain(int argc, _TCHAR* argv[])
{Test();return 0;
}

strcpy()、strncpy()和strcpy_s()函数的区别相关推荐

  1. linux strcpy函数,C语言中函数strcpy ,strncpy ,strlcpy,strcpy_s的用法

    好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. strcpy 我们知道,strcpy 是依据 \0 作为结 ...

  2. C语言 strcpy 和 strcpy_s 函数区别 - C语言零基础入门教程

    目录 一.strcpy_s 函数/strcpy 函数简介 1.strcpy 函数语法 2.strcpy_s 函数语法 二.strcpy/strcpy_s 函数实战 三.猜你喜欢 零基础 C/C++ 学 ...

  3. strcpy和strncpy区别 memcpy strcpy strncpy lstrcpy lstrncpy wstrcpy, memmove

    strcpy和strncpy区别(2009-04-27 15:48:52) 转载标签:杂谈 分类:C++/C 第一种情况: char* p="how are you ?"; cha ...

  4. c++ sleep函数_C ++ strcpy()和strncpy()函数

    C ++ strcpy() C ++中的strcpy()函数将字符串从源复制到目标. strcpy()原型 char * strcpy(char * dest,const char * src); 该 ...

  5. C语言中函数strcpy ,strncpy ,strlcpy的用法

    C语言中函数strcpy ,strncpy ,strlcpy的用法 http://hi.baidu.com/qi_hao/blog/item/043ef21c6e26c58286d6b678.html ...

  6. (C语言)常用的字符串函数介绍(strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen)非常详细

    理解 strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen这些函数,可以帮助我们更好的对字符串进行操作,做到玩转字符串. 目录 1.s ...

  7. c语言strdup,C语言中的strdup()函数和其与strcpy()函数的区别

    头文件: #include 定义函数: char * strdup(const char *s); 函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小,然后将参数s ...

  8. strcpy_s函数/strcpy函数简介

    strcpy /* *描述:此类函数是用于对字符串进行复制(拷贝). * *参数: * [in] strSource:需要拷贝的字符串 * [out] strDestination:拷贝完成之后的字符 ...

  9. strcpy ,strncpy ,strlcpy地用法

    strcpy ,strncpy ,strlcpy地用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...

最新文章

  1. mysql安装 ---简单实用
  2. php获取随机字符串的几种方法
  3. android m权限工具类,android M权限适配,简单工具类
  4. ORA-12519: TNS:no appropriate service handler found 解决方法
  5. Theano 中文文档 0.9 - 2. 发行说明
  6. 一种数据结构的封装模式
  7. cgblib 代理接口原理_Spring5参考指南-AOP代理
  8. 策略模式 (Strategy)
  9. 使用JConsole观察分析Java程序的运行(转)
  10. Codeforces 1156B
  11. C/C++游戏项目完整教程:《坦克大战》
  12. 【 js 基础 】【 源码学习 】 setTimeout(fn, 0) 的作用
  13. 平缓的banner图片切换效果
  14. 声音断续、卡顿问题分析
  15. word后续段落格式变掉_如何在Word中设置段落格式
  16. hackbar2.1.3 安装教程(附下载地址 )Firefox Chrome
  17. Python爬虫初步个人学习及心得
  18. 提取acc文件字幕的解决方案
  19. (个人)订阅号注册公众平台步骤
  20. 鬼知道NOI会不会成为下一个奥数

热门文章

  1. Ecshop 最小起订量如何设置
  2. Google Maps API for Android 指南(一)
  3. 国有企业数字化转型建设方法论
  4. 基于php_thinkphp_vue养生馆保健品购物商城网站(源码+系统+mysql数据库+Lw文档)
  5. C++ Reference: Standard C++ Library reference: C Library: cstdio: fgetc
  6. STM32入门-区别ORD,BSRR,BRR寄存器
  7. 如何使用热风枪焊接特殊的QFN封装的芯片
  8. 贵有恒,若事事勤思善问,何患不一日千里?--惭愧
  9. 网格平滑基础算法总结
  10. 图解LeetCode——768. 最多能完成排序的块 II(难度:困难)