Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个程序有什么问题吗 #包括 #包括 使用名称空间std; int main(){ char sor[6]=“你好”; char des[6]=“你好”; strcat(des、sor); cout_C++_String_Visual C++ - Fatal编程技术网

C++ 这个程序有什么问题吗 #包括 #包括 使用名称空间std; int main(){ char sor[6]=“你好”; char des[6]=“你好”; strcat(des、sor); cout

C++ 这个程序有什么问题吗 #包括 #包括 使用名称空间std; int main(){ char sor[6]=“你好”; char des[6]=“你好”; strcat(des、sor); cout,c++,string,visual-c++,C++,String,Visual C++,Des不够大,无法容纳串联后的结果。您应该增加数组的大小。Des只有6个字节的空间,您正在尝试在其中容纳11个字节5+5+1: #include <iostream> #include <cstring> using namespace std; int main() { char sor[6] = "hello"; char des[6] = "hello"; strcat(des,sor); cout <&

Des
不够大,无法容纳串联后的结果。您应该增加数组的大小。

Des
只有6个字节的空间,您正在尝试在其中容纳11个字节5+5+1:

#include <iostream>
#include <cstring>
using namespace std;
int main() {
  char sor[6] = "hello";
  char des[6] = "hello";
  strcat(des,sor);
  cout << des;
}
这会导致堆栈损坏(因为des是一个自动变量),这就是cout可以工作但程序尝试返回时会崩溃的原因。
如果您在使用数组之前声明des[11]

尝试分配内存,它就可以工作了。希望这对您有所帮助
正如Gunner所建议的,试着根据要放入数组的大小分配内存。

strcat
将第二个参数附加到第一个参数的末尾。这意味着在您的情况下,连接的总长度将是11个字符,而
des
只有足够容纳6个字符的位置。更改
des(6)<代码> >代码> DES(11)< /C> >程序将运行良好。还检查参考更多关于“代码> STRCAT/CODE> < /P> > P >。同时增加字符串字符数组的大小将有助于您在这种情况下,让我建议实际使用C++特性;在您想对C++进行编码时,不要对C进行编码:

'h'+'e'+'l'+'l'+'o'+'h'+'e'+'l'+'l'+'o'+'\0'
#包括
#包括
使用名称空间std;
int main(){
string sor=“你好”;
string des=“你好”;
des+=sor;

coutstrcar连接字符串。您应该验证是否有足够的空间用于此操作。
在您的例子中-您已经为6个字符分配了内存,而连接的字符串将有11个字符(最后是10个字符和\个字符)

在使用大于或等于11的数组之前,请尝试分配大内存。希望这有帮助这听起来像是一个家庭作业问题。是吗?@Alf p.Steinbach不,不是全部..我在尝试其他方法。不,他不应该使用字符数组。@phresnel为什么我不应该使用字符数组?我不认为字符数组有problem@Suhail古普ta,@asma:人们不应该使用char数组,因为正是这种情况。存在着更多的危险情况;实际上,当你使用C数组时,你的程序会受到缓冲区溢出攻击。你很幸运,你直接收到了异常;但比你想象的更常见的是,这些错误很微妙,在几天、几个月、几年内都不要暴露自己;然后,你的客户可能会因为被破解和丢失客户信用卡信息而出现在每日新闻中。实际上,我不得不同意phresnel关于不使用字符数组来实现此目的的说法。但在这种情况下,OP想知道为什么会出现问题因此,我的答案集中在这一点上,而不是建议替代编码。
#include <iostream>
#include <string>
using namespace std;
int main() {
  string sor = "hello";
  string des = "hello";
  des += sor;
  cout << des;
}