0
Так вот что я пытаюсь сделать:Хотя цикл не работает с fgetc
Я прошу пользователю ввести ряд предложений
Всякий раз, когда он хочет, чтобы остановить он нажмет Q (заглавная буква)
- И затем должна начаться следующая обработка.
Что я получаю сейчас:
- Пользователю предлагается ввести столько предложений, сколько он хочет
- Но когда он нажимает Q контроль не переходит из цикла в то время как в следующую инструкцию.
Это программа 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 попытаться уйти вправо? – Jacobr365
Обратите внимание, что fgetc() возвращает 'int', а не' char'. Кроме того, это не должно даже компилироваться, 'printf (" ch ===% c "ch);' отсутствует запятая. Будьте внимательны при публикации кода. – Jens
@ Jacobr365 yep i a \ m используя shift + q. –