【问题标题】:Replacing an underscore with a user entered character (In C)用用户输入的字符替换下划线(在 C 中)
【发布时间】:2018-05-10 04:00:22
【问题描述】:

这是家庭作业

我必须编写一个井字游戏,我剩下的唯一问题是格式化。这是我的矩阵函数,用户和计算机必须在其中输入他们的 O 和 X。

void the_matrix() { // Like the movie
//Get rid of the underscores 

 int m;

printf("The current state of the board:\n");
 for (m = 0; m < 3; m++) {
printf("%c_ %c_ %c_\n", table[m][0], table[m][1], table[m][2]);
  }
printf("\n");
}

所以项目要求编译器像这样显示游戏(为了简单起见,我只展示了这篇文章的第一行应该是什么样子。):

"_ _ _" [忽略引号]

然后用户在 (1,1) 位置输入“O”

哦 _ _。

当我运行我的程序时,它看起来像这样

O_ _ _

我知道程序为什么这样做,这是因为我的 printf 语句将它设置为那样。但我的问题是如何将下划线与 O 或 X 交换,这样下划线就不会显示了。

任何帮助将不胜感激!

【问题讨论】:

  • printf("%c %c %c", ...) 怎么样?
  • @melpomene 我需要'_'作为空位
  • 只需使用所有下划线初始化板,并在输入时将它们替换为 Xs 或 Os。然后让您的打印功能简单地打印板的内容。打印功能不会关心板的内容是什么。

标签: c arrays replace


【解决方案1】:

我会将电路板的逻辑/状态与您显示它的方式区分开来。所以棋盘的值可以有明确的含义,比如0 代表空白,1 代表玩家 1,2 代表玩家 2,而您打印它的方式可能会有所不同,这取决于您是否有GUI 或终端。尤其是您的算法将不依赖于显示问题,例如您不必仅仅因为您决定通过 . 而不是 - 显示空白字段而更改算法:

请参阅以下说明此方法的代码:

typedef enum {
    BLANK = 0,
    PLAYER1 = 1,
    PLAYER2 = 2
} BoardValue;

BoardValue table[3][3] = { BLANK };

char displayValue(int state) {
    return (state == PLAYER1 ? 'O' : (state == PLAYER2 ? 'X' : '-'));
}

void the_matrix() { // Like the movie
    //Get rid of the underscores

    int m;

    printf("The current state of the board:\n");
    for (m = 0; m < 3; m++) {
        printf("%c %c %c\n", displayValue(table[m][0]), displayValue(table[m][1]), displayValue(table[m][2]));
    }
    printf("\n");
}


int main() {

    table[0][0] = PLAYER1;
    table[1][1] = PLAYER2;

    the_matrix();
}

【讨论】:

  • 恕我直言,这是片状的;如果表条目设置为意外值(例如代码中其他地方的错误),则可能导致崩溃或安全​​漏洞
  • @MM:是的;修改了代码,使得除了 player1 或 player2 之外的任何内容都打印为空白。
【解决方案2】:

printf ("%c_") 将打印一个字符后跟一个下划线。

你需要的是printf ("%c"),参数应该决定你是打印O、X还是下划线。

再想一想,最简单的做法可能是初始化您的数组,使其在每个空格中都有_,并且您的逻辑应该将其识别为“空”。然后你可以打印出现在你的数组中的字符。

【讨论】:

  • 那么我是否会在 printf 中创建没有 %c 的矩阵,然后再用我的 char 持有者创建另一个 printf?
猜你喜欢
  • 2018-05-20
  • 2012-02-22
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2022-01-21
相关资源
最近更新 更多