Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c语言中,如何连续打印文本直到用户输入特定字符?_C - Fatal编程技术网

在c语言中,如何连续打印文本直到用户输入特定字符?

在c语言中,如何连续打印文本直到用户输入特定字符?,c,C,我想打印文本(来自以前打开的文件),直到我按下键q。我尝试过的所有方法都是暂停打印文本。在C中查找按键时是否有打印文本的方法 例: 它仅在输入字符后打印提示。我想让它继续不断地打印提示 解决了我发现的此网页的问题:您可以创建子进程 父项从文件中打印元素 子等待用户输入 要停止执行,可以使用kill(getppid(),SIGTERM)杀死父级,并退出(0)杀死子级 基于jave.web在 #包括 #包括 #包括 #包括 #包括 字符waitForCharInput(整数秒){ char c='

我想打印文本(来自以前打开的文件),直到我按下键
q
。我尝试过的所有方法都是暂停打印文本。在C中查找按键时是否有打印文本的方法

例:

它仅在输入字符后打印提示。我想让它继续不断地打印提示


解决了我发现的此网页的问题:

您可以创建子进程

  • 父项从文件中打印元素
  • 子等待用户输入
  • 要停止执行,可以使用kill(getppid(),SIGTERM)杀死父级,并退出(0)杀死子级

    • 基于
      jave.web

      #包括
      #包括
      #包括
      #包括
      #包括
      字符waitForCharInput(整数秒){
      char c='';//默认返回值
      while(秒!=0){
      如果(_kbhit()){//键盘缓冲区中是否有键
      c=_getch();//获取字符
      break;//我们找到了char!不用再等了。。。
      }
      睡眠(1000);//一秒钟的睡眠
      --秒;//倒计时一秒
      }
      返回c;
      }
      int main()
      {
      FILE*fp=fopen(“_文件名“,“r”);
      字符缓冲区[255];
      而(fgets(缓冲区,255,(文件*)fp))
      {
      printf(“%s\n”,缓冲区);
      char响应=waitForCharInput(1);
      如果(响应='q')
      打破
      }
      }
      
      在这里找到了我的答案:


      我知道我的问题太宽泛了,但这就是我解决问题的方法。

      欢迎来到这里。请阅读并发布一个。显示代码请向我们展示您所做的工作。:)添加了一个示例,可能值得一提线程too@tijko在我看来,在这种情况下,使用子进程更容易。由于我获取要打印的文本的方式,我认为我不容易使用子进程。有没有办法在子进程之外执行此操作?@joeGV您可以使用select来stdin
      //after turning off canonical mode and echoing
      
      char* output = "press q to stop this";
      
      char ch;
      
      while(ch = getchar()!= 'q')
      {
          printf("%s\n",output);
      }
      
      #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;
          }
      }