【发布时间】:2020-06-29 06:18:36
【问题描述】:
这是我的代码,我在这个阶段的目标是创建一个 ASCII 动画,一旦输入任何字符就终止它。我在这个阶段使用getch(),但它似乎不起作用。
#include <stdio.h>
#include <time.h>
#include <curses.h>
int main() {
int i, j, ms = 250;
const char *a = "*";
struct timespec delay;
delay.tv_sec = 0;
delay.tv_nsec = ms * 1000000L;
while(1) {
for (i = 0; i < 4; i++) {
printf("%c", a[i]);
fflush(stdout);
nanosleep(&delay, NULL);
printf("\b");
}
if(getch() != -1)break;
//printf("%c,%d\n",buffer,buffer);
}
return 0;
}
【问题讨论】:
-
不起作用是什么意思?会发生什么?
-
你需要开启getch()的无延迟模式,否则会阻塞等待用户输入。对于 i = 0..3,您还可以使用
a[i],但a里面只有 2 个字符,而不是 4 个:'*' 和 '\0'。 -
问题是我输入了什么,程序只是继续执行而不是停止。
-
不要使用
-1,使用EOF来检测文件结束。您需要结束输入,EOF才能由getch返回。在 Unix 系统上,您可以键入^D来实现此目的。对于 Windows,嗯,大概有一些方法可以做到这一点。 -
如何调用编译器?
标签: c printf output ascii curses