首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >战舰|字符数组中的垃圾打印输出

战舰|字符数组中的垃圾打印输出
EN

Stack Overflow用户
提问于 2020-03-29 08:54:40
回答 1查看 41关注 0票数 0

我正在开发战舰游戏,我正在尝试为游戏板制作一个字符数组。我考虑的是一个大小为11x21的矩形数组。就像这样,

代码语言:javascript
运行
复制
0  1 2 3 4 5 6 7 8 9 10 / 1 2 3 4 5 6 7 8 9 10
1  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
2  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
3  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
4  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
5  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
6  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
7  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
8  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
9  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
10 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

我正在尝试做的是稍后有单独的数组,并将历史镜像到该板中,并将其打印到日志文件中。

问题是现在我卡在初始化这个11x21电路板。由于某些原因,电路板一直初始化到第6行,即gameboard6 = 6的第一个值。

然后,从第7行开始,gameboard7处的第一个值变成一个字母。

我怀疑这些字母篡改了数据,然后导致打印成为垃圾。但我不确定我到底哪里出错了。

以下是原始代码:

代码语言:javascript
运行
复制
int i = 0, j = 0;
    char gameboard[11][22] = {'\0'};

    for (i = 0; i < 11; ++i)
    {
        gameboard[i][0] = (char)i;
        gameboard[i][11] = (char)i;
        for (j = 1; j < 11; ++j)
        {
            gameboard[i][j] = '~';
            gameboard[i][j + 11] = '~';
        }
    }

    for (i = 0; i < 11; i++)
    {
        for (j = 0; j < 22; j++)
            printf(" %c", gameboard[i][j]);
        printf("\n");
    }
EN

回答 1

Stack Overflow用户

发布于 2020-03-29 16:19:38

当使用字符数组时,不要尝试将其与整数值混合。这些整数值将被解释为它们的等效字符。Here是一个图表,它将整数值映射到它们所表示的字符。而不是这样做,尝试依赖于数组中的索引来确定行/列号。

下面的代码将生成以下内容作为输出:

代码语言:javascript
运行
复制
0  1 2 3 4 5 6 7 8 9 10 /1 2 3 4 5 6 7 8 9 10
1  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
2  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
3  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
4  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
5  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
6  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
7  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
8  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
9  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
10 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
代码语言:javascript
运行
复制
int i = 0, j = 0;
char gameboard[10][21];

for (i = 0; i < 10; ++i) {
    for (j = 0; j < 10; ++j) {
        gameboard[i][j] = '~';
        gameboard[i][j + 11] = '~';
    }
}
for (i = 0; i < 10; i++) {
    gameboard[i][10] = '/';
}

printf("0  ");
for (i = 0; i < 21; i++) {
    j = i < 11 ? i+1 : i - 10;
    if (i == 10)
        printf("/");
    else {
        printf("%d ", j);
    }
}
printf("\n");

for (i = 0; i < 10; i++) {
    printf("%d", i + 1);
    if (i + 1 <= 9)
        printf(" ");

    for (j = 0; j < 21; j++)
        printf(" %c", gameboard[i][j]);
    printf("\n");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60908936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档