【问题标题】:Making a bordered box in C with a movable character用可移动字符在 C 中制作带边框的框
【发布时间】:2015-04-10 05:52:46
【问题描述】:

我有几个问题,我正在通过Zed Shaw Book 学习 C,我想我会稍作休息,尝试将我目前所学的知识用于测试。但后来我卡住了。

第一个问题是创建一个空框。我似乎无法做到这一点。我可以创建一个框,缺少底部但它由'*'填充,如果我只是做'',那么 c 编译器状态:create_border.c:12:14: error: expected expression

第二个问题,我不知道如何连接到键盘,所以当我按下上、下、左、右一个字符时,@ 在这种情况下会四处移动并在它的边缘停止。

到目前为止,我只有:

#include <stdio.h>

#define MAX_Y 6
#define MAX_X 6

void print_board(char board[MAX_Y][MAX_X]);

int main(int argc, char *argv[]) {

    char exampleBoard[MAX_Y][MAX_X] = {
        {'x','-','-','-','-','x'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'|','*','*','*','*','|'},
        {'x','-','-','-','-','x'}
    };

    print_board(exampleBoard);

    return 0;
}

void print_board(char board[MAX_Y][MAX_X]) {

    int row = 0;
    int col = 0;

    for(row = 0; row < MAX_Y; row++) {
        for(col = 0; col < MAX_X; col++) {
            printf("%c", board[row][col]);
        }

        printf("\n");
    }

    printf("\n\n");
}

所有这些打印出来的是:

x----x
|****|
|****|
|****|
|****|

这就是我的期望:

  • 一个空盒子,盒子里的任何地方都没有'*'@ 字符。
  • 能够移动 @ 并在到达边界时停止。

非常感谢任何帮助。

【问题讨论】:

  • 您可以将'' 替换为' '(空格字符)。而且,您能说出您使用的是哪个操作系统吗?因为不同操作系统的方向键代码不同。

标签: c


【解决方案1】:

在终端中,“空壳”是空格字符。你可以用' '代替''来写。

然后,要读取键盘,您可以直接从终端使用read syscall 进行读取。但是您的终端的默认配置将强制您在每个键之间按enter 以使您的阅读工作。

注意:您可以使用像 ncurses 这样的库来简化这种 ASCII 编程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多