一共就两行代码,怎么会有错误?代码如下: char *szPath_00="D:\\program";
 strcat(szPath_00, "\\");

解决方案 »

  1. 非要 写成:
     char szPath_00[]="D:\\program";
    才可嘛?char * 与其不是等价的嘛?
      

  2. char *szPath_00="D:\\program";
     strcat(szPath_00, "\\");
    ========
    你的szPath_00的空间不够啊,这样写运行时肯定不行啊
      

  3. 就是这样写运行还是同样会出错的,szPath_00的空间有限,一定会溢出的。
      

  4. 改成这样吧:
    char szPath_00[12]="D:\\program";
     strcat(szPath_00, "\\");
      

  5. 你的字符串"D:\\program"是分配在常量区
    你的szPath_00指针是指向的常量区,当然不能修改里面的内容了。
      

  6. 谢谢大家那,这段代码何解: char temp[]="D:\\program";
     char *temp1="D:\\program";
     cout<<sizeof(temp)<<endl;
     cout<<sizeof(temp1)<<endl;输出结果为:
     11
     4为什么是4啊?谢谢解答。
      

  7. cout<<sizeof(temp1)<<endl;
    ==========
    这个输出的是指针的长度,32位下系统中的指针都是4位的。
      

  8. char *szpath="..."字符串常量,strcat时候会有内存onlyread报告....
      

类似问题 »