我可以刷新多行输出吗?
Can i fflush multiline output?
有什么方法可以 fflush()
多行输出吗?例如,如果我想在 5 行中打印一个 5x5 数组并每 1 秒将其洗牌多次,我应该如何使用 fflush()
?
#include <stdio.h>
#include <stdlib.h>
int main(){
int arr[5][5]; //Just an array of numbers
for(int k = 0; k < 10; k++){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
fflush(stdout);
shuffle(arr);
sleep(1);
}
return 0;
}
这是我希望输出改变的方式(当然不创建任何额外的新行):
0 1 2 3 4 5 3 12 7 8
6 7 8 9 10 -> 1 2 0 13 6
. .
. .
. .
rewind(stdout)
和 fsetpos()
我都试过了,但似乎什么都没做。
你要的就是清屏。你可以做
system("cls");
在 Windows 或 system("clear");
在 Unixy 系统上。
或者有 https://en.wikipedia.org/wiki/ANSI_escape_code - 如果你打印那些特殊字符,就会发生一些事情,你可以将光标移到顶部并覆盖文本或尝试清除屏幕。
我不确定哪个转义码适合你,实验一下。
有什么方法可以 fflush()
多行输出吗?例如,如果我想在 5 行中打印一个 5x5 数组并每 1 秒将其洗牌多次,我应该如何使用 fflush()
?
#include <stdio.h>
#include <stdlib.h>
int main(){
int arr[5][5]; //Just an array of numbers
for(int k = 0; k < 10; k++){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
fflush(stdout);
shuffle(arr);
sleep(1);
}
return 0;
}
这是我希望输出改变的方式(当然不创建任何额外的新行):
0 1 2 3 4 5 3 12 7 8
6 7 8 9 10 -> 1 2 0 13 6
. .
. .
. .
rewind(stdout)
和 fsetpos()
我都试过了,但似乎什么都没做。
你要的就是清屏。你可以做
system("cls");
在 Windows 或 system("clear");
在 Unixy 系统上。
或者有 https://en.wikipedia.org/wiki/ANSI_escape_code - 如果你打印那些特殊字符,就会发生一些事情,你可以将光标移到顶部并覆盖文本或尝试清除屏幕。 我不确定哪个转义码适合你,实验一下。