如何在C语言中打印二维char数组 井字棋游戏板开发相关问题
问题核心错误
你当前代码的问题出在printf("%s",board[1][0]);这一行:
%s格式符要求传入C字符串的首地址(类型为char*)- 而
board[1][0]是单个char类型的字符(也就是第二行第一个字符'-'),类型完全不匹配,运行时会触发段错误或异常输出。
数组寻址规则
你定义的char board[5][8]是二维字符数组,寻址分两种场景:
- 要取整行字符串(比如打印一整行游戏板):只用第一个下标即可,
board[i]就是第i行字符串的首地址,直接用%s打印即可 - 要取单个字符(比如修改某行某列的棋子位置):用两个下标
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
相关产品推荐
相关产品推荐

