关于在控制台输出的问题
我是用vs2010写的。麻烦运行一下代码。
我要问的问题是:时间的输出和文字的输出两者之间可不可以同时进行,有没有方法让它们不闪烁的。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <conio.h>
# include <windows.h>
# include <stdlib.h>
# include <time.h>
void CreateConsoleCursorPosition (COORD xy)
{
HANDLE hOut = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleCursorPosition (hOut , xy);
}
void CleanConsoleScreen (COORD xy)
{
HANDLE hOut = GetStdHandle (STD_OUTPUT_HANDLE);
FillConsoleOutputCharacterA (hOut , ' ' , 80 , xy , NULL);
}
# define Pos(xy) CreateConsoleCursorPosition(xy) //define 的应用,不能有多余的空格。
# define Clean(xy) \
CleanConsoleScreen(xy) //使用 # define 是需要换行的话要用到“\”将标识符隔开
void showtime (void)
{
struct tm *pt;
time_t t;
while (true && ! GetAsyncKeyState (VK_ESCAPE))
{
t = time (NULL);
pt = localtime (&t);
COORD xy = {20 , 0};
Pos (xy);
printf ("%d:%d:%d" , pt->tm_hour , pt->tm_min , pt->tm_sec);
Sleep (50);
COORD XY = {30 , 30};
Pos (XY);
printf ("你好");
Sleep (50);
Clean (XY);
Clean (xy);
}
}
int main (void)
{
showtime ();
return 0;
}
大家有空的话都来看看,有什么好的建议的也希望大家分享一下。
[此贴子已经被作者于2017-11-4 14:35编辑过]