弱问一个字符串操作问题
下面这个代码能编译但运行出错.不知哪里有问题.求高手.
#include <iostream>
#include <string.h>
using namespace std;
void main()
{
char *p;
char *q;
p = "abcd ";
q = strcat(p, "a ");
cout < <q < <endl;
}
[解决办法]
p还没有分配空间。
最好使用数组。
char p[10];
char *q;
strcpy(p, "abcd ");
q = strcat(p, "a ");
也可以直接初始化p:
char p[10] = "abcd ";
[解决办法]
strcat是追加字符或字符串的意思,q中没有初始化,因此运行时候会出错。
[解决办法]
p指向的空间是只读内存空间,不可以改写。
[解决办法]
你没有给数据分配空间啊!如果你这样char* p定义数组的话要直接初始化的.像这样char* p = "hello world! ";但如果你要用它来指向某一个数组你可以这样char buf[]= "hello world ";p = buf; 再如char* p = new char(...); 但像你那样是不行的!
[解决办法]
楼主的行为是在向一个常量字符串末尾追加一个‘a '。显然这是非法的!
如果要做追加的操作,一定要分配出空间,再让p指向它。