我尝试使用单个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)
<
答案 0 :(得分:0)
如果您不想要缓冲,可以使用NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *date=[dateFormatter dateFromString:@"2015-4-23 10:08"];
NSLog(@"%@",date);
(或fwrite(3)
,但如果您在同一次写入中清除屏幕,则可能会这样做。)
write(2)
或
fwrite(map, 80, 40, stdout); // or any two numbers whose product is 80*40
答案 1 :(得分:0)
#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;
}
我已将地图更改为线性数组。这样就可以更容易地在末尾添加\0
来关闭字符串。如果没有\0
,则puts()
命令不知道何时停止打印。在你的情况下它只是一个<
,但它可能会导致打印很多字符!
另外,我不会依赖于多维数组在内存中线性映射的事实。