打印没有 for 循环的矩阵
Printing a matrix without for loops
我正在尝试使用单个 put 而不是嵌套循环来打印 char 矩阵,但我总是在打印结束时多得到一个字符。我要做乒乓球游戏,需要尽快更新画面
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)
<
您可以使用 fwrite(3)
(如果您不想要缓冲,则可以使用 write(2)
,但如果您在同一次写入中清除屏幕,您可能会这样做)。
fwrite(map, 80, 40, stdout); // or any two numbers whose product is 80*40
或
write(1, map, 80*40);
#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] = '[=10=]';
puts(map);
return 0;
}
我已将地图更改为线性阵列。这样更容易在末尾添加一个 [=11=]
来关闭字符串。没有[=11=]
,puts()
命令不知道什么时候停止打印。在你的例子中,它只是一个 <
,但它可能会导致打印很多字符!
此外,我不会依赖多维数组在内存中线性映射这一事实。
我正在尝试使用单个 put 而不是嵌套循环来打印 char 矩阵,但我总是在打印结束时多得到一个字符。我要做乒乓球游戏,需要尽快更新画面
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)
<
您可以使用 fwrite(3)
(如果您不想要缓冲,则可以使用 write(2)
,但如果您在同一次写入中清除屏幕,您可能会这样做)。
fwrite(map, 80, 40, stdout); // or any two numbers whose product is 80*40
或
write(1, map, 80*40);
#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] = '[=10=]';
puts(map);
return 0;
}
我已将地图更改为线性阵列。这样更容易在末尾添加一个 [=11=]
来关闭字符串。没有[=11=]
,puts()
命令不知道什么时候停止打印。在你的例子中,它只是一个 <
,但它可能会导致打印很多字符!
此外,我不会依赖多维数组在内存中线性映射这一事实。