zoukankan      html  css  js  c++  java
  • char数组和strcpy的讨论

    #include <iostream>
    using namespace std;
    
    void main()
    {
    	char *buffer = new char (10);
    	printf("before: %s\n",buffer);
    
    	char temp[5] = {'1','2','3','4','5'};		//error,因为只分配5个空间,并且全占满,那么在11行的strcpy函数执行后,buffer中就没有null来表示字符串的结束了,而就是{'1','2','3','4','5','未知','未知','未知','未知','未知'}
    	//char temp[6] = {'1','2','3','4','5'};		//fine
    	strcpy(buffer,temp);
    	
    	printf("after: %s\n",buffer);
    }
    
    

    如果使用chartemp[5] = {'1','2','3','4','5'};那么这个size为5的数组里最后一个元素为5,而不是null,所以strcpy(buffer,temp);了以后,buffer中的内容为{'1','2','3','4','5','未知','未知','未知','未知','未知'},那么没有'\0'结尾的话,就会出现读程序异常了。

  • 相关阅读:
    计蒜客 动态规划基础 蒜头跳木桩
    委托的使用和合并
    asp.net "callback" 和 "postback" 的区别.
    3 顶层父类
    2 异常类
    1 智能指针
    16 #error 和 #line
    15 条件编译
    14 宏
    13 编译和链接
  • 原文地址:https://www.cnblogs.com/lihaozy/p/1857136.html
Copyright © 2011-2022 走看看