有功能可以防止用户在功能运行时输入吗?

时间:2019-02-18 14:32:54

标签: c

我制作的程序在功能之间存在延迟,并且在程序运行时,用户可以在程序运行时进行干扰并键入字符。

该程序以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");
}

我希望看到文本被打印出来,而延迟之间不会有任何干扰。

1 个答案:

答案 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");来使光标不可见

相关问题