gpt4 book ai didi

c++ - 为什么在 c 中使用 strcpy 时我的源代码会发生变化

转载 作者:太空狗 更新时间:2023-10-29 23:21:27 24 4
gpt4 key购买 nike

使用 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 不分配存储字符串所需的内存。在执行 strcpy 之前,您必须在 str2 中分配足够的内存。否则,您会在覆盖一些未分配的内存时出现未定义的行为。

关于c++ - 为什么在 c 中使用 strcpy 时我的源代码会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com