我如何打印一个 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;
}
这是输出
source: baby
return value: v����baby
pointer pass: v����baby
基本上我想看到输出打印
source: baby
return value: baby
pointer pass: baby
最佳答案
你还没有初始化dest
char dest[1020] = ""; //should fix it
您很幸运,dest
中的第 6 个(随机)值恰好是 0
。如果它是第 1000 个字符,您的返回值会更长。如果它大于 1024,那么你会得到未定义的行为。
作为 char
数组的字符串必须用 0
分隔。否则就不知道它们的终点在哪里。您也可以通过将字符串显式设置为 0 来表示该字符串在其第零个字符处结束;
char dest[1020];
dest[0] = 0;
或者你可以用 0 初始化你的整个数组
char dest[1024] = {};
并且由于您的问题被标记为 C++
我不得不注意到在 C++ 中我们使用 std::string
s 这让您免于很多头痛。运算符 + 可用于连接两个 std::string
关于c++ - 如何在C++中打印字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8229476/