在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;
}
}