请问C语言里strcpy具体怎么使用

请问C语言里strcpy具体怎么使用,第1张

  标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。

  c语言strcpy()用法

  这是C语言里面复制字符串的库函数, 函数声明包括在专门处理字符串的头文件《string.h》中:

  char * strcpy( char * dst, const char * src );

  这个函数把字符串src复制到一分配好的字符串空间dst中,复制的时候包括标志字符串结尾的空字符一起复制。操作成功,返回dst,否则返回NULL.

  你要注意,你的第二个字符串src的长度+1(+1是因为字符串以空子符结束)不能超过你为dst开辟的空间的大小,否则src里的空字符无法复制到dst里面,你的dst就成了字符数组,不是字符串了,那样如果你后面有一条printf或者puts语句什么的,要打印出dst的,那就会由于没有空字符标志字符串的结束而越界了。

  例如:

  定义一个字符串char a[20],和一个字符串c[]=“i am a teacher!”;

  把c复制到a中就可以这样用:strcpy(a,c);

  这个函数包含在头文件 《string.h》中。

  程序代码:

  #include《string.h》

  #include《iostream.h》

  void main()

  {char a[20],c[]=“i am teacher!”;

  strcpy(a,c);

  cout《《a《《endl;

  }

  你看好了:

  char a[20] = “abcde”

  strcpy(&a[1], a)函数是逐个字符拷贝,

  首先拷贝第一个字符,a[0] == ‘a’;a[1] = a[0]; 即a[1] = ‘a’;

  然后拷贝第二个字符,此时a[1] == ‘a’; a[2] = a[1];即a[2] = ‘a’;

  依次类推!!!a[0] = ‘a’没什么用,其实初始a[0]就等于‘a’的!

  copy(p,n,size_type _Off = 0):从string类型对象中至多复制n个字符到字符指针p指向的空间中。默认从首字符开始,但是也可以指定,开始的位置(记住从0开始)。返回真正从对象中复制的字符。------用户要确保p指向的空间足够保存n个字符。

  // basic_string_copy.cpp

  // compile with: /EHsc /W3

  #include 《string》

  #include 《iostream》

  int main( )

  {

  using namespace std;

  string str1 ( “1234567890” );

  basic_string 《char》::iterator str_Iter;

  char array1 [ 20 ] = { 0 };

  char array2 [ 10 ] = { 0 };

  basic_string 《char》:: pointer array1Ptr = array1;

  basic_string 《char》:: value_type *array2Ptr = array2;

  cout 《《 “The original string str1 is: ”;

  for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )

  cout 《《 *str_Iter;

  cout 《《 endl;

  basic_string 《char》:: size_type nArray1;

  // Note: string::copy is potenTIally unsafe, consider

  // using string::_Copy_s instead.

  nArray1 = str1.copy ( array1Ptr , 12 ); // C4996

  cout 《《 “The number of copied characters in array1 is: ”

  《《 nArray1 《《 endl;

  cout 《《 “The copied characters array1 is: ” 《《 array1Ptr 《《 endl;

  basic_string 《char》:: size_type nArray2;

  // Note: string::copy is potenTIally unsafe, consider

  // using string::_Copy_s instead.

  nArray2 = str1.copy ( array2Ptr , 5 , 6 ); // C4996

  cout 《《 “The number of copied characters in array2 is: ”

  《《 nArray2 《《 endl;

  cout 《《 “The copied characters array2 is: ” 《《 array2Ptr 《《 endl;

  ////注意一定要使array3有足够的空间

  //char array3[5]={0};

  //basic_string《char》::pointer array3Ptr=array3;

  //basic_string《char》::size_type nArray3;

  //nArray3 = str1.copy(array3,9); //错误!!!!

  //cout《《“The number of copied characters in array3 is: ”

  // 《《nArray3《《endl;

  //cout《《“The copied characters array3 is: ”《《array3Ptr《《endl;

  }

  上面最后注释掉的部分,虽然编译没有错误,但是运行时会产生错误:Stack around the variable ‘array3’ was corrupted.

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/dianzi/2717494.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-08-17
下一篇2022-08-17

随机推荐

  • 元始天尊简介—道教最高神三清之一

    元始天尊,全称青玄祖炁玉清元始天尊妙无上帝,又名玉清紫虚高妙太上元皇大道君,是道教最高神三清之一,玉清元始天尊道场位于昆仑玉清境。昆仑山与玉京山不同,昆仑山在玉清境,玉京山在大罗天,三界之上曰四民天.

  • 梁山5个没去打方腊的人

    5个人分别是:紫髯伯皇甫端、铁叫子乐和、神医安道全、圣手书生萧让、玉臂匠金大坚。这5人之所以没有去征讨方腊,主要是都有一技之长,被当时的官员看中留用了。紫髯伯皇甫端他最初是东昌府城内的兽医,宋江攻下东

    2022-12-06
    000
  • 欧阳修苦读的原因

    欧阳修苦读是因为当时他家境贫寒,又聪明好学,长大后有雄才大志,唯有效力国家,才能有一番成就,这是促使他苦读成功最直接的原因。欧阳修四岁时父亲就去世了,家境贫寒,母亲用芦苇秆在沙地上写字,教给他写字,还

    2022-12-06
    000
  • 秦国仲父是什么意思

    秦国仲父指的是秦国丞相吕不韦,秦国的新任国君嬴政认吕不韦做相父,希望借助吕不韦的势力做靠山,让年幼的自己坐稳皇位,而仲父的本意在古代是父亲的弟弟。吕不韦是战国末年著名商人、政治家、思想家,官至秦国丞相

    2022-12-06
    000
  • 吕不韦和异人什么关系

    吕不韦和异人两个人是非常好的合作伙伴,也是非常好的朋友,这两个人曾经一起合作掌握了秦国的政权,秦异人当上大王以后第一件事情就是封吕不韦为丞相。当时吕不韦是一个非常富有的商人,但他并不满足现在的生活,只

    2022-12-06
    000
  • 2019年的龙抬头在哪天

    2019年的龙抬头是公历3月8日,星期五。龙抬头是中国的传统节日,在每年的农历二月初二。龙抬头这个节日和天象有关,在中国古代,天文学家们将日月星辰在天空中的位置划为了二十八组,称为“二十八星宿”,在东

    2022-12-06
    000
  • 秦始皇为什么要建万里长城

    中国历史上第一个统一中央集权大帝国建立之后,秦始皇乘势北击匈奴,南征百越,修筑万里长城,将中国推向了大一统的时代。公元前215年秦大将蒙恬率大军北击匈奴,刚刚一统天下的虎狼之师,一举大败敌军,夺下了河

    2022-12-06
    000
  • 单身最多的星座男是哪些

    单身最多的星座男:1、双子男:在双子男看来,与其苦苦寻觅所谓真爱,还不如把自己照顾好来得实在。人生苦短,谁说一个人就不能过好一辈子?2、狮子男:孤独对于狮子座来说不仅不是痛苦,还会越来越上瘾,尽管别人

    2022-12-06
    000
  • 国考公务员笔试考什么

    公务员考试分为国考和省考,两者考试科目都包含公共科目和专业科目,公共科目包含行测和申论两部分,公共科目是所有考生必考科目。而专业科目是部分要求有专科科目考试的岗位要考察的科目考试。如涉及人民警察职位会

    2022-12-06
    000

发表评论

登录后才能评论

评论列表(0条)

    保存