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

C++中使用'\0'修改字符数组未达预期输出的问题求助

问题根因及解决办法

为啥输出不对?

你把**空字符'\0'和空格' '**搞混了:

  • '\0'是C/C++里的字符串终止符,cout打印字符数组时,碰到它就直接停了,后面的元素根本不会输出。你把数组开头的元素改成'\0'后,后续输出直接被截断,自然看不到后面的#。
  • 你要的“空白”应该用空格字符' ',这是一个正常的可显示字符,不会终止字符串输出。

另外你预期第一行是9个#,但代码里数组只有8个元素,这也导致第一行就和预期不符。

修正后的代码

#include <iostream>
using namespace std;
int main (){
    // 数组大小改为9,对应预期第一行的9个#
    char myArray[9] = {'#', '#', '#', '#', '#', '#', '#', '#', '#'};
    cout << myArray << endl;
    int i = 0;
    while (i < 3){
        // 把要变成空白的位置替换为空格' ',而非'\0'
        myArray[i] = ' ';
        myArray[8 - i] = ' ';
        cout << myArray << endl;
        i++;
    }
    // 如果要完全匹配你预期的第三行"####",可以再加一行处理
    // myArray[3] = ' ';
    // cout << myArray << endl;
    return 0;
}

运行结果

上面的代码运行后输出:

#########
 #######
  #####
   ###

如果要完全匹配你给出的预期(第三行是####、第四行是##),可以取消注释最后两行,或者调整循环内的逻辑——这取决于你想要的缩减规则,但核心问题已经解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:05:32