【发布时间】:2011-07-17 10:06:34
【问题描述】:
使用 strcpy 后,源被损坏并获得正确的目的地。以下是我的代码,请告诉我为什么我的源代码被破坏了?如果我对第二个字符数组 q[] 保持固定大小,那么我的源不会被更改。为什么会出现这种奇怪的行为。 -
我正在使用 MSVC 2005
void function(char* str1,char* str2);
void main()
{
char p[]="Hello world";
char q[]="";
function(p,q);
cout<<"after function calling..."<<endl;
cout<<"string1:"<<"\t"<<p<<endl;
cout<<"string2:"<<"\t"<<q<<endl;
cin.get();
}
void function(char* str1, char* str2)
{
strcpy(str2,str1);
}
输出:
after function calling...
string1: ld
string2: Hello world
提前致谢,
马拉地语
【问题讨论】:
-
“在使用 strcpy 源被损坏并获得正确的目的地后”,这是没有意义的。
-
@Daniel,是的,这是有道理的,因为 q 上的 strcpy 会覆盖为 p 分配的内存。
-
它已损坏并获得正确的目的地。很抱歉,但我不明白这句话背后的含义。当我看到 strcpy(...) 和 char q[] = "".
-
如果使用 C++,使用 std::string 可能是合理的。运算符 = 完全符合您的需要。
-
@Daniel:它是源 string,而不是源 code。这让我有点困惑。