我制作的程序在功能之间存在延迟,并且在程序运行时,用户可以在程序运行时进行干扰并键入字符。
该程序以0.1秒的延迟一次输出一个字符串的字符,但是在打印字符串时,用户可以通过在字母之间输入字母来干扰。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void delay(unsigned int milliseconds){
clock_t start = clock();
while((clock() - start) * 1000 / CLOCKS_PER_SEC < milliseconds);
}
void text (int br, char sentence []){
int c = 0;
for (c = 0; c < br; c++){
printf("%c", sentence[c]);
fflush(stdout);
delay (100);
}
}
int main(){
text (15,"Hello friends!\n");
}
我希望看到文本被打印出来,而延迟之间不会有任何干扰。
答案 0 :(得分:3)
这不可能以便携式方式完成。如果您使用的是Linux,则可以查看ncurses库。
如果您对禁用输出感到满意,并且使用POSIX系统,则可以执行以下操作:
void text (int br, char sentence []){
system("stty -echo");
/* Your previous code */
system("stty echo");
}
如果您还想从该函数运行时键入的任何内容中清除标准输入:
void text (int br, char sentence []){
system("stty -echo");
/* Your previous code */
int ch; while ((ch = getchar()) != '\n' && ch != EOF);
system("stty echo");
}
可以使用system("setterm -cursor off");
来使光标不可见