首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

char*跟char[]的strcpy出错

2013-09-07 
char*和char[]的strcpy出错#includeiostreamint main(){char *a NULL//testchar b[5] teststr

char*和char[]的strcpy出错

#include<iostream>
int main()
{
char *a = NULL;//"test";
char b[5]= "test";
strcpy(b,a);
std::cout<<b;
system("pause");
}

为什么这样写总是copy不了呢?vs老是中断在strcat.asm里,什么原因呢?是不是strcpy还调用了strcat啊?
还是有其他原因呢,谁知道原理告诉我一下,还有,具体需要怎么改,谢谢! strcpy char* char[]
[解决办法]
strcpy不接受NULL指针,会报错的。
[解决办法]

char *strcpy(char *dest, const char *src);
//第二个参数是常指针的
he  strcpy()  function copies the string pointed to by src, including the terminating null byte ('\0'), to the buffer pointed to by dest.

[解决办法]
引用:
a和b反了。。。而且拷贝源必须是C风格字符串,望留意!

错了 反过来也不对,不能往NULL里面拷东西。。。
[解决办法]
引用:
Quote: 引用:


char *a = "k"; //静态区,只可读,不能修改
char b[5] = "xxx"; //一般栈区,可读可写
//注意越界问题
这怎么能是静态的呢,修改完全没问题啊

如果你往a里拷贝就有问题了
[解决办法]
引用:
Quote: 引用:


char *a = "k"; //这个是常量字符串,存放在静态区,只可读,不可改!!!!

//有时间看看内存管理吧!
我这修改a完全没问题
#include<iostream>
int main()
{
char *a = "l";//"test";
char *b= "test";
a = "ss";
//strcpy(a,b);
std::cout<<a;
system("pause");
}

你修改a是修改的a的指向,不能修改的是用下表操作时
------解决方案--------------------


引用:
Quote: 引用:


 char *a = "l";//"test";
    a = "ss";
// 亲, 你这不是修改好吧!
//你只是把ss的地址赋值给了a而已,让a从新指向了一个只可读区间
//可以打印地址看看嘛!很基础的,看看书吧!
我有点明白了,你说的修改,指的是修改指针中存的变量的值吧,*a = 's';是这个吧?还有就是难道strcpy是通过*a这种方式进行运作的?所以第一个参数才不能为char *a = “s”;中的a?

你copy的话要先申请空间把
改成char *a = new char[10];就可以了

热点排行