You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++字符数组打印异常求助:VS Code用MSVC编译输出不符预期

问题分析与解决

你的代码存在数组越界访问的问题,直接导致了不符合预期的输出:

  • 你用初始化列表{'a','e','i','o','u'}创建的字符数组v,不会自动在末尾添加字符串结束符'\0'。
  • 但循环的终止条件是v[j]!='\0',这会让程序持续读取数组之后的内存区域,直到碰到值为'\0'的字节才停止,因此会打印出额外的乱码字符。

修复方案

有两种简单的修复方式:

方式一:手动添加结束符

在初始化列表末尾补上'\0',让数组符合C风格字符串的要求:

int j=0;
char v[] = {'a','e','i','o','u', '\0'};
for(j=0;v[j]!='\0';j++)
{
    cout << v[j] << "\n";   
}

方式二:用字符串字面量初始化

用双引号包裹的字符串字面量会自动在末尾追加'\0',写法更简洁:

int j=0;
char v[] = "aeiou";
for(j=0;v[j]!='\0';j++)
{
    cout << v[j] << "\n";   
}

如果想彻底避免这类手动管理结束符的问题,也可以改用C++的std::string:

#include <string>
// ...
std::string v = "aeiou";
for(char c : v)
{
    cout << c << "\n";
}

内容的提问来源于stack exchange,提问作者DeatHerTZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:37:04