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

如何在C语言中打印二维char数组 井字棋游戏板开发相关问题

问题核心错误

你当前代码的问题出在printf("%s",board[1][0]);这一行:

  • %s格式符要求传入C字符串的首地址(类型为char*)
  • 而board[1][0]是单个char类型的字符(也就是第二行第一个字符'-'),类型完全不匹配,运行时会触发段错误或异常输出。

数组寻址规则

你定义的char board[5][8]是二维字符数组,寻址分两种场景:

  1. 要取整行字符串(比如打印一整行游戏板):只用第一个下标即可,board[i]就是第i行字符串的首地址,直接用%s打印即可
  2. 要取单个字符(比如修改某行某列的棋子位置):用两个下标board[i][j],对应第i行第j位的单个字符,打印单个字符用%c格式符。

修正后的示例代码

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char board [5][8]={"  |  |  ","--+--+--","  |  |  ","--+--+--","  |  |  "};
    // 示例1:打印第二行整行字符串
    printf("直接打印第二行:%s\n", board[1]);
    
    // 示例2:用循环打印整个游戏板
    printf("\n完整游戏板:\n");
    for(int i = 0; i < 5; i++) {
        printf("%s\n", board[i]);
    }
    
    // 示例3:修改棋子位置(棋子行的空格坐标为索引1、4、7)
    board[0][1] = 'X';
    board[0][4] = 'O';
    printf("\n修改后游戏板:\n");
    for(int i = 0; i < 5; i++) {
        printf("%s\n", board[i]);
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:48:04