虽然循环不能与fgetc

时间:2016-04-06 18:28:33

标签: c string while-loop fifo fgetc

所以我们正在尝试做什么:

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

  2. 每当他想要停止时,他都会按Q(首字母)

  3. 然后应该开始下一个处理。
  4. 我现在得到的是什么:

    1. 提示用户输入任意数量的句子
    2. 但是当他按下Q时,控制器不会从while循环切换到下一条指令。
    3. 这是一个FIFO程序。如果你看到任何其他错误,请报告它们。谢谢!

      以下是代码:

      #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]='\0';
      
      fd=open(myfifo,O_WRONLY);
      
      if(fd<0)
      {
          printf("Cannot open fifo");
      }
      else
      {
          write(fd,str,strlen(str));
      }
      
      close(fd);
      unlink(myfifo); 
      }
      

1 个答案:

答案 0 :(得分:0)

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

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]='\0';