c++ - C++中出现这种异常输出的原因

标签 c++ printf

我无法理解此代码输出的异常行为。 它打印:

 hellooo
monusonuka

代码在这里:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
printf(" hellooo \n");
char name[7]="sonuka";
char name1[4]={'m','o','n','u'};
printf("%s",name1);
system("pause");
return 0;
}

最佳答案

您的 name1 数组未以零字符结尾 ('\0')。 printf 函数打印字符,直到找到零。在您的情况下,它超过了数组的末尾。发生的是未定义的行为。一个可能的结果是其他变量或垃圾被打印到屏幕上,直到最终 \0 在内存中的其他地方被击中,但任何事情都可能发生,包括你的程序崩溃。

关于c++ - C++中出现这种异常输出的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115683/

相关文章:

c++ - 在 C++11 中使用 SFINAE 在具有相同签名的两个函数之间进行选择

c++ - 抛出并捕获 std::string

c++ - 模板实参作为模板参数传给另一个模板时,为什么推导不出来?

PHP sprintf 被认为是有害的?

C: 函数跳过代码中的用户输入

c - 打印长的十六进制字符串

c++ - 移动大数字

c++ - Windows 控制台颜色值是否有与之关联的官方名称(常量)?

根据时间创建消息宏

C 标准输出 printf