Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无延迟地写入控制台_C_Console_Stdout - Fatal编程技术网

C 无延迟地写入控制台

C 无延迟地写入控制台,c,console,stdout,C,Console,Stdout,我正在写一个命令行游戏,应该以4-40 FPS的速度运行(稍后会选择)。但是,我有个问题。使用putchar()绘制由1920个彩色字符组成的“图像”需要0.2-0.3秒,我可以看到我的图像被一行一行地绘制出来。然而,例如,在Firefox中,我可以在不到十分之一秒的时间内在画布上绘制64000个RGB像素 有没有办法避免这种延迟,这种延迟是控制台强制的还是处理输出所需的时间?不要使用putchar。将代表屏幕状态的字符填满缓冲区,然后使用write将缓冲区一次发送到stdout,然后刷新它 例

我正在写一个命令行游戏,应该以4-40 FPS的速度运行(稍后会选择)。但是,我有个问题。使用putchar()绘制由1920个彩色字符组成的“图像”需要0.2-0.3秒,我可以看到我的图像被一行一行地绘制出来。然而,例如,在Firefox中,我可以在不到十分之一秒的时间内在画布上绘制64000个RGB像素


有没有办法避免这种延迟,这种延迟是控制台强制的还是处理输出所需的时间?

不要使用
putchar
。将代表屏幕状态的字符填满缓冲区,然后使用
write
将缓冲区一次发送到stdout,然后刷新它

例如:
write(标准输出文件号、缓冲区、缓冲区大小);fflush(stdout)

不要使用
putchar
。将代表屏幕状态的字符填满缓冲区,然后使用
write
将缓冲区一次发送到stdout,然后刷新它

例如:
write(标准输出文件号、缓冲区、缓冲区大小);fflush(stdout)

您应该在内存中组装输出字符串,并在一个和平状态下写入。例如,使用printf

您应该在内存中组装输出字符串,并在一个和平状态下写入。例如,使用printf

此类控制台游戏已经存在很长时间了。您是否考虑过查看现有技术以了解它们是如何解决此问题的?这可能是一个很好的开始:这种控制台游戏已经存在很长时间了。您是否考虑过查看现有技术以了解它们是如何解决此问题的?这可能是一个很好的开始:尝试过这个,看不到自定义颜色,你有解决方案吗?要更改自定义颜色,只需使用
fputs(“\033[40m”,标准输出)
例如。根本不起作用,只写奇怪的字符。有没有办法使您的方式SetConsoleTextAttribute友好?尝试了这个,看不到自定义颜色,您有解决方案吗?要更改自定义颜色,只需使用
fputs(“\033[40m”,stdout)
例如。根本不起作用,只写奇怪的字符。有什么方法可以使您的方式SetConsoleTextAttribute友好吗?