不显示 strcpy 源

strcpy source is not displayed

 #include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main ()
{
    char a[]="one string",b[]="twostrings";
     strcpy (a,b);

    cout<<"A="<<a;
    cout<<endl<<"B="<<b<<endl;
}

a 和 b 显示后是相等的,但是如果我像这样输入 a space b[]="two strings",然后 cout b,它显示 b 为空白,为什么?

因为 space,a[] 缓冲区不够大,无法保存 b 的副本,而你试图这样做会破坏堆栈,产生 undefined行为。任何事情都可能发生,但在您的情况下,它很可能会用终止符 NUL 覆盖下一个变量(即 b)的第一个字节,从而使 b 显示为空。

拼写出来:

a          b
one string0two strings0  // original content 0=NUL
two strings0wo strings0  // after copy

强制提示:尽可能使用 std::string