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

如何在C语言中创建由'-'组成的二维数组

问题分析与修复方案

嘿,我来帮你捋捋这段代码里的问题,以及怎么修改才能实现你想要的由'-'组成的二维数组~

原代码的几个核心问题:

  • 数组索引越界:你的数组是char table[10][10],数组索引从0开始计数,第一维的合法索引范围是0到9,你写的table[10][i]直接访问了超出数组范围的内存,这会导致未定义行为(程序崩溃、输出乱码都有可能)。
  • 误用字符串操作函数:strcpy是用来复制完整字符串的,但你这里只是想给单个字符赋值'-',完全没必要用这个函数,直接赋值就行。
  • 内层循环变量未利用:你内层循环遍历了j,但代码里根本没用到这个变量,说明你没正确定位到二维数组的每个元素,应该操作table[i][j]才对。

修复后的代码

如果你只是想创建全是'-'的二维字符数组,之后逐个字符输出,这样写就可以:

#include <stdio.h>

int main() {
    char table[10][10];

    // 填充每个元素为'-'
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            table[i][j] = '-';
        }
    }

    // 打印整个二维数组
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            printf("%c", table[i][j]);
        }
        printf("\n"); // 每行结束换行
    }

    return 0;
}

如果之后想把每行当作字符串来打印(用printf("%s", ...)),那需要给每行末尾加上字符串结束符'\0',这时候要把数组定义成char table[10][11];(多留一个位置存结束符),修改后的代码如下:

#include <stdio.h>

int main() {
    char table[10][11]; // 每行多一个位置存字符串结束符

    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            table[i][j] = '-';
        }
        table[i][10] = '\0'; // 给每行加上字符串结束符
    }

    // 按字符串打印每行
    for (int i = 0; i < 10; i++) {
        printf("%s\n", table[i]);
    }

    return 0;
}

这样运行后就能得到你想要的10×10全是'-'的二维数组啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:31:14