在c中,如何在用户输入特定字符之前连续打印文本?

时间:2017-04-08 17:56:41

标签: c

我想打印文本(从之前打开的文件中)直到我按下键def kl_divergence(p, q): return tf.reduce_sum(p * tf.log(p/q)) 。我尝试过的所有方法都会暂停打印出来的文字。有没有办法在C中寻找按键时打印文本?

前:

q

它只在您输入字符后打印提示。我希望它继续持续打印提示。

解决了我发现的这个网页的问题:http://cc.byexamples.com/2007/04/08/non-blocking-user-input-in-loop-without-ncurses/

3 个答案:

答案 0 :(得分:1)

您可以创建子流程。

  • parent从文件
  • 打印elem
  • 子等待用户输入
  • 停止执行你可以使用kill(getppid(),SIGTERM)来杀死父级并退出(0)来杀死孩子

答案 1 :(得分:0)

根据Wait for input for a certain time

jave.web的回复
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<unistd.h>
#include<windows.h>


char waitForCharInput( int seconds ){
    char c = '_'; //default return
    while( seconds != 0 ) {
        if( _kbhit() ) { //if there is a key in keyboard buffer
            c = _getch(); //get the char
            break; //we got char! No need to wait anymore...
        }

        Sleep(1000); //one second sleep
        --seconds; //countdown a second
    }
    return c;
}

int main()
{
    FILE *fp = fopen("_filename_","r");
    char buffer[255];
    while(fgets(buffer, 255, (FILE*) fp))
    {
        printf("%s\n", buffer);
        char response = waitForCharInput(1);
        if(response == 'q')
            break;
    }
}

答案 2 :(得分:0)

在这里找到我的答案:http://cc.byexamples.com/2007/04/08/non-blocking-user-input-in-loop-without-ncurses/

我理解我的问题过于宽泛,但这就是我解决问题的方法。