strcpy_s函数两个参数和三个参数

转载 2012年03月22日 21:57:52
         看名字明白,它和strcpy()函数的功能应该一样的。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;
}

输出为:
strlen(str1): 11
strlen(str): 5
hello world
hello

对于VS中一些较严谨的(_s)函数如strcpy_s的第二个参数的问题

在学习中发现strcpy_s中第二个参数不能随便写。开始我碰到这个比较严谨的函数时我故作聪明,将第二个参数使用strlen()代替。但拿不严谨的小聪明去解决严谨的函数问题必然问题一大堆。 今天这一个...
  • sinat_24048775
  • sinat_24048775
  • 2015年08月18日 17:19
  • 2299

C++安全函数之strcpy_s

C++安全函数之strcpy_s 1.  必须包含的头文件: 2.  函数声明: errno_t strcat_s( char *strDestination, size_t nu...
  • wxm349810930
  • wxm349810930
  • 2016年09月16日 09:11
  • 2731

用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。

函数功能:使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。思考...
  • no_sying_nothing
  • no_sying_nothing
  • 2016年05月29日 22:49
  • 858

sort函数中三个参数的用法

1、sort函数一般只对数组元素排序,而且必须知道地址。如对a[0]到a[n-1]共n个元素进行排序,用sort(ar,ar+n)。其中n可以为1,即对一个元素也可以使用sort函数。 2、可以有如下...
  • lz465350
  • lz465350
  • 2014年02月20日 20:43
  • 3124

【Android】LayoutInflater.inflate()方法两个参数和三个参数的区别

相信大家都用过LayoutInflater(布局填充器),常用姿势有以下两种。mInflater.inflate(R.layout.item, parent, false);和mInflater.in...
  • yingpaixiaochuan
  • yingpaixiaochuan
  • 2016年10月29日 21:31
  • 3305

使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。

(1)第一种实现方法#include #include #include int Add(int a, int b) { return a+b; } int Sub(int a, i...
  • weixin_37922654
  • weixin_37922654
  • 2017年05月06日 15:56
  • 358

C语言提高之——函数运用(参数、递归)

理解:     想用好函数应该对函数有一个充分的理解,如果不能充分理解函数,运用起来也会容易产生问题。关于函数的理解大家可以参考这篇博客:函数再理解!。下边就在下边在运用上做一些相关说明。 参数:  ...
  • u013030441
  • u013030441
  • 2015年05月11日 21:15
  • 990

java参数后面跟三个点是什么意思

AVA中类型后面跟三个点是什么来的。   看代码中那个三点,这样做起到重载的作用,但这是什么意思?   class Father   {       public void foo(S...
  • xyy511
  • xyy511
  • 2015年03月20日 09:40
  • 1675

inflate方法两个参数和三个参数的区别

前言今天在lint项目的代码时,又遇到了inflate方法的参数问题,之前看过相关的文章,又没有记录下来,导致时间长了就忘记了。今天再次遇到这个问题,便老老实实记录一下LayouInflater中in...
  • dangnianmingyue_gg
  • dangnianmingyue_gg
  • 2017年05月08日 16:14
  • 229

c语言 可变参数 三个点 ...

1.函数中使用可变参数表C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, …); 它除了有一个参数...
  • believnjdvnkds
  • believnjdvnkds
  • 2016年07月29日 15:30
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:strcpy_s函数两个参数和三个参数
举报原因:
原因补充:

(最多只允许输入30个字)