gpt4 book ai didi

c++ - strcpy 不适用于相同大小的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:36 27 4
gpt4 key购买 nike

当我尝试使用 strcpy 将一个字符串的值分配给其他字符串时,出现运行时错误。代码下方:

int main (int argc, char **argv)
{
char str[5];
char str2[5];//if set size of str2 equal to 6, no error occurs

str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = 'd';
str[4] = 'e';

cout<<sizeof(str)<<endl;
cout<<str[0]<<endl;
cout<<str[1]<<endl;
cout<<str[2]<<endl;
cout<<str[3]<<endl;
cout<<str[4]<<endl;

strcpy(str2,str);

cout<<sizeof(str2)<<endl;
cout<<str2[0]<<endl;
cout<<str2[1]<<endl;
cout<<str2[2]<<endl;
cout<<str2[3]<<endl;
cout<<str2[4]<<endl;

getch();
return 0;
}

错误是:

Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted

如果我将 str2 的大小设置为 6 或更多,程序运行良好。这里有什么问题?

最佳答案

strcpy 对以零结尾的字符串进行操作。您的 char 数组没有终止零字节。

如果将数组声明为 [6] 时它正常工作,那只是偶然。

关于c++ - strcpy 不适用于相同大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628651/

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