#include <cstring>
#include <iostream>
using namespace std;
int main(){
 char *s="This ";
          char *s1="is a test";
 strcat(s,s1);
 printf("%s\n",s);}
为什么运行时为出错呀?

解决方案 »

  1.   

    char * s="this "是在内存中分配了6个字节的的空间然后s指向它!
    strcat(s,s1);的时候s1会追加到这6个字节空间的后面,但是这些空间其他的内存空间
    最好这样
              char s[30];
              strcpy(s,"This ")
              char *s1="is a test";
     strcat(s,s1);
     printf("%s\n",s);
      

  2.   

    这样也是可以的
    char s[123]="This ";
    char *s1 ="is a test";
    strcat(s,s1);
    printf("%s\n",s);
      

  3.   

    char* pch = "Hello";
    如果要重新改变pch指向的内容一定不要长于它以前的长度。
      

  4.   

    你可以这样试试
    char *s="This ";
    char *s1="is a test";
    size_t len1=strlen(s);
    size_t len2=strlen(s1);
    s=new char[len1+len2];strcat(s,s1);
    printf("%s\n",s);
    delete []s;
      

  5.   

    char s[128]="This ";
    char s1[128]="is a test";
      

  6.   

    char * s="this "是在内存中分配了6个字节的的空间然后s指向它!
    strcat(s,s1);的时候s1会追加到这6个字节空间的后面,但是这些空间其他的内存空间          char s[30];
              strcpy(s,"This ")
              char *s1="is a test";
     strcat(s,s1);
     printf("%s\n",s);
    同意!!!
      

  7.   

    这样定义s,s1就是常量字符串了.最多也只能修改它们的内容,地间空间是不能变的.还是用数组吧.要么用Cstring 类来实现.