我正在尝试使用单个放置而不是嵌套循环来打印字符矩阵,但我总是在打印结束时多得到一个字符。我要做一个乒乓球游戏,我需要尽快更新屏幕。
void main()
{
int x, y;
char map[40][80];
for(y=0; y<40; y++)
{
for(x=0; x<80; x++)
{
map[y][x]='o'; //Just for testing.
}
}
puts(map);
}
使用此代码打印的最后两行是:
ooooooooooooo...o (80 'o's)
<
最佳答案
#include <stdio.h>
int main(int argc, char **argv)
{
int x, y;
char map[40*80+1];
for(y=0; y<40; y++) {
for(x=0; x<80; x++) {
map[y*80+x]='o';
}
}
map[40*80] = '\0';
puts(map);
return 0;
}
我已将 map 更改为线性数组。这样可以更轻松地添加 \0
最后关闭字符串。没有 \0
,puts()
命令不知道何时停止打印。在你的情况下,这只是一个 <
,但它可能会导致打印很多字符!
此外,我不会依赖多维数组在内存中线性映射的事实。
关于c - 不使用 for 循环打印矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288190/