【发布时间】:2016-04-06 18:28:33
【问题描述】:
所以这就是我想要做的:
我要求用户输入多个句子
只要他想停下来就按Q(大写字母)
- 然后应该开始下一个处理。
我现在得到了什么:
- 提示用户输入任意数量的句子
- 但是当他按下 Q 时,控件不会从 while 循环转移到下一条指令。
这是一个 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);
}
【问题讨论】:
-
只是为了确定,您是按 shift+q 来尝试退出,对吗?
-
请注意 fgetc() 返回
int,而不是char。此外,这甚至不应该编译,printf("ch===%c"ch);缺少逗号。发布代码时请更加勤奋。 -
@Jacobr365 是的,我使用 shift+q 的 \m。
-
编译后(通过包含
stdio.h、stdlib.h、fcntl.h和string.h并添加逗号)它在输入Q(并输入)后退出循环。它挂在open上,等待其他进程打开fifo进行读取。 -
@Jens 是的。对于那个很抱歉。如果我错了,请纠正我,如果
fgetc返回int那么我如何在ch变量中获取一个字符?我还在学习 C。对于无聊的问题,我很抱歉。
标签: c string while-loop fifo fgetc