int getLineCount() {
int ret = 0;
char c;
while ((c = fgetc(stdin)) != EOF)
if (c == '\n')
ret++;
return ret + 1;
}
void fill(char *WORD) {
int charIndex = 0;
char c;
while ((c = fgetc(stdin)) != EOF) {
*(WORD + charIndex++) = c;
}
}
int main() {
int lineNum = getLineCount();
char *WORD = (char*)calloc(lineNum * 18,sizeof(int));
fill(WORD);
return 0;
}
Вот часть моего кода, и мой вопрос (как вы можете видеть):Чтение из STDIN Дважды C
Я пытаюсь читать содержание STDIN дважды, но после getLineCount функция, она остается на EOF, и я не могу прочитать ее снова в заполните функции.
Im принимает stdin от пользователя с помощью этой команды в Linux;
$./output < text_file.txt
Есть ли способ отбросить stdin до начального символа? Если нет, как я могу исправить эту проблему?
Спасибо.
Попробуйте 'man fseek'. ** Обновление **: К сожалению. Это 'stdin' .. нет, вы не можете. Он не доступен для поиска. –
@ user3121023: Плохой стиль, чтобы предположить, что вы можете перемотать 'stdin'. – Olaf
@ user3121023 Интересно ... Это действительно работает? –