c++ - 如何在C++中打印字符数组

标签 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;
}

这是输出

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/

相关文章:

c++ - 将文件写入C++中不存在的文件夹

Java 2D 最小化

ios - 对象数组与不同的数组

swift - 同一对象不同地址。为什么?

python - 如何在自定义嵌入式Python对象中存储指针

c++ - 如何为变量分配别名

c++ - 错误: 'QObject' 是 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(hdlRxDone(QByteArray))) 的模糊基数;

c - 打印链表中 head 指向的项目时出现取消引用错误

python - 发现未记录程序的 IPC 接口(interface)?

javascript - 函数内的重叠循环