Цикл для пользовательского ввода - PullRequest
1 голос
/ 30 октября 2011

Я хотел бы написать программу, которая продолжает запрашивать ввод данных пользователем, пока я не вырвусь из нее с помощью Ctrl + D. Вот что у меня есть:

char input[100];
while(input != EOF){
       printf("Give me a sentence:\n");
       fgets(input, 5, stdin);
       printf("your sentence was: %s\n", input);
}

Я бы хотел, чтобы fgets начинался с первых 5 символов нового ввода, а не 6-го числа последнего ввода всякий раз, когда он повторяется, и я также не знаю, как написать условие на время, чтобы прервать это через Ctrl + D. Прямо сейчас, как вы видите, ввод (который является символом [], сравнивается с EOF).

Спасибо за любой совет.

Ответы [ 2 ]

1 голос
/ 30 октября 2011

Я думаю, вы ищете функцию feof.

char input[100];
while(!feof(stdin)){
       printf("Give me a sentence:\n");
       fgets(input, 5, stdin);
       printf("your sentence was: %s\n", input);
}
0 голосов
/ 30 октября 2011

Вам не нужно беспокоиться об «обнаружении» Ctrl-D, поскольку это оболочка, которую ваша программа не видит.Вы должны рассмотреть возможность использования перенаправления ввода при исправлении кода, прежде чем беспокоиться о ctrl-D

./myExecutable < inputFile
...