如何在c ++中打印char数组

Car*_*low 7 c++ arrays pointers char

我如何打印一个char数组,如初始化,然后连接到另一个char数组?请参阅下面的代码

int main () {
char dest[1020];
char source[7]="baby";
cout <<"source: " <<source <<endl;
cout <<"return value: "<<strcat(dest, source) <<endl;
cout << "pointer pass: "<<dest <<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是输出

source: baby
return value: v????baby
pointer pass: v????baby
Run Code Online (Sandbox Code Playgroud)

基本上我想看看输出打印

source: baby
return value: baby
pointer pass: baby
Run Code Online (Sandbox Code Playgroud)

Arm*_*yan 9

你还没有初始化 dest

char dest[1020] = ""; //should fix it
Run Code Online (Sandbox Code Playgroud)

你只是幸运,事有凑巧,在第6个(随机)值dest0.如果是第1000个字符,则返回值会更长.如果它大于1024,那么你会得到未定义的行为.

作为char数组的字符串必须用分隔符0.否则就不知道他们在哪里结束了.或者可以说,字符串通过显式设置为0来结束其第0个字符;

char dest[1020];
dest[0] = 0;
Run Code Online (Sandbox Code Playgroud)

或者你可以用0来初始化你的整个数组

char dest[1024] = {};
Run Code Online (Sandbox Code Playgroud)

而且由于您的问题被标记,C++我不得不注意到在C++中我们使用std::strings来避免您的头痛.Operator +可用于连接两个std::strings

  • 它是未定义的行为,期间. (3认同)