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

C语言如何读取字母矩阵文件并根据用户输入坐标获取对应字符

坐标匹配功能实现方案

首先在代码开头补充字符串处理所需的头文件:

#include <string.h>
  • 第一步:读取文件矩阵到内存二维数组
    在你原有fopen成功的逻辑后,添加如下代码,将文件中的矩阵逐行读取到二维数组中,同时记录矩阵的行数和列数:
char matrix[MAX][MAX] = {0};
int rows = 0, cols = 0;

// 逐行读取文件内容存入矩阵
while (fgets(matrix[rows], MAX, input) != NULL) {
    // 移除每行末尾的换行符,避免影响字符匹配
    char *newline_ptr = strchr(matrix[rows], '\n');
    if (newline_ptr != NULL) {
        *newline_ptr = '\0';
    }
    // 以第一行的长度作为矩阵列数
    if (rows == 0) {
        cols = strlen(matrix[rows]);
    }
    rows++;
}
// 矩阵读取完成后关闭文件
fclose(input);
  • 第二步:接收用户输入坐标并做合法性校验
    需要先和用户约定坐标计数规则,普通用户通常默认行号、列号从1开始计数,读取后转换为数组0索引即可,同时要校验坐标是否在矩阵范围内,避免数组越界:
int input_row, input_col;
printf("请输入坐标(行号 列号,空格分隔):");
// 校验输入格式合法性
while (fscanf(stdin, "%d %d", &input_row, &input_col) != 2) {
    // 清空错误输入的缓冲区
    while (getchar() != '\n');
    printf("输入格式错误,请重新输入行号和列号:");
}
// 1计数转0计数,如果约定坐标从0开始可删除下面两行
input_row -= 1;
input_col -= 1;
// 校验坐标是否在矩阵范围内
if (input_row < 0 || input_row >= rows || input_col < 0 || input_col >= cols) {
    printf("输入坐标超出矩阵范围,程序退出\n");
    return 1;
}
  • 第三步:匹配矩阵字符判断游戏结果
    直接通过索引取对应位置的字符,结合你的游戏规则做判断即可,示例规则如下:
char target_char = matrix[input_row][input_col];
if (target_char == 'B') {
    printf("游戏失败:该坐标对应字符为B\n");
} else if (target_char == 'S') {
    printf("游戏胜利:该坐标对应字符为S\n");
} else {
    printf("无匹配规则:该坐标对应字符为%c\n", target_char);
}

补充说明:

  1. 需要保证输入的矩阵文件每行长度一致,否则会出现坐标匹配错位问题
  2. 如果矩阵最大尺寸超过1000*1000,需要调整MAX宏的定义数值
  3. 如果需要支持用户多次输入坐标查询,可以把坐标输入、校验、判断的逻辑套入循环结构即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:03