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

C++字符数组打印时出现额外随机字符的原因是什么?

问题原因及解决办法

你遇到的问题核心在于C风格字符串必须以空字符'\0'作为结束标志。当你用std::cout << array;打印字符数组时,程序会从数组起始位置逐个输出字符,直到碰到'\0'才会停止。但你的代码里只往数组中存入了n个输入字符,没有在最后添加这个结束标志,导致程序继续读取数组后面未初始化的内存区域,这些区域里的随机值就被当成额外字符打印出来了。

解决方法

有两种简单的修复方式:

方式一:手动添加结束标志

在循环结束后,给数组的第n位赋值'\0'(注意要保证n < 100,避免数组越界):

#include<iostream>
int main()
{
    int n;
    std::cin>>n;

    char array[100]; 
    
    for(int i=0; i<n; i++) 
    {
        std::cin>>array[i];
    }
    array[n] = '\0'; // 添加结束标志
    std::cout<<array;

    return 0;
}

方式二:改用std::string存储(更推荐)

C++的std::string会自动处理字符串结束的逻辑,不需要手动管理'\0',使用起来更安全便捷:

#include<iostream>
#include<string>
int main()
{
    int n;
    std::cin>>n;

    std::string str;
    
    for(int i=0; i<n; i++) 
    {
        char c;
        std::cin>>c;
        str += c;
    }
    
    std::cout<<str;

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:44:54