虽然循环不适用于 fgetc

While loop not working with fgetc

所以这是我正在尝试做的事情:

  1. 我要求用户输入一些句子

  2. 每当他想停下来他就会按Q(大写字母)

  3. 然后应该开始下一个处理。

我现在得到的:

  1. 系统会提示用户输入任意数量的句子
  2. 但是当他按下 Q 时,控制不会从 while 循环转移到下一条指令。

这是一个 FIFO program.If 你看到任何其他错误都报告 them.Thanks!

代码如下:

#include<stdio.h>
#include<fcntl.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/stat.h>
void main()
{

int i=0,fd;
char str[500]="",ch;

char *myfifo="/home/rahulp/Desktop/myfifo";

mkfifo(myfifo,0666);    

printf("Enter the sentences:");

while((ch=fgetc(stdin))!='Q')
{
    printf("ch===%c",ch);
    str[i++]=ch;

}
str[i]='[=10=]';

fd=open(myfifo,O_WRONLY);

if(fd<0)
{
    printf("Cannot open fifo");
}
else
{
    write(fd,str,strlen(str));
}

close(fd);
unlink(myfifo); 
}

忽略 mkfifo 正在发生的事情的可能性,这就是你应该如何阅读标准输入:

int ch;

printf("Enter the sentences:");
fflush(stdout);

while ((ch = fgetc(stdin)) != EOF)
{
    if (ch == 'Q')
        break;
    printf("ch=%c\n", ch);
    str[i++]=ch;
}
str[i]='[=10=]';