Я пишу программу, которая будет генерировать хэши для файлов или для строки из stdin. Однако fseek и ftell не будут работать на stdin, поэтому я не могу зарезервировать буфер, перемотать stdin в начало и прорвать весь поток. Так есть ли простой способ сделать это? Или я должен просто читать n символов каждый раз и отправлять его в функцию обновления состояния для каждого хэша?Прочитайте весь stdin до EOF в C
0
A
ответ
2
Если вы считаете, что stdin всегда текстовый, вы можете прочитать целые строки с него, используя getline(3).
Если вы хотите обрабатывать произвольный ввод (в том числе нетекстового стандартного ввода) вы должны использовать fread(3) в петле на некотором достаточно большом блоке (например, 4K или 16K байт) и принять во внимание частичное читает. Блок может содержать нулевые байты. Вы обновите состояние внутри цикла.
У вас может быть частичное чтение посередине, например. если вы читаете из трубы (с popen(3) ....) в Linux ...
+0
LSNED "частичное чтение посередине". – chux
Смежные вопросы
- 1. Прочитайте STDIN (SYSIN) в COBOL
- 2. Прочитайте символ stdin символом C++
- 3. Восстановить stdin от eof в C
- 4. Почему пустой STDIN с EOF
- 5. C++ Прочитайте весь текстовый файл
- 6. C++ - getline stdin EOF не работает
- 7. До EOF синтаксиса C
- 8. Чтение целых чисел до EOF в C
- 9. Как заставить eof на stdin?
- 10. сканирование до EOF в c
- 11. Прочитайте весь файл в блоках в C#
- 12. Pylint: прочитайте с stdin?
- 13. Прочитайте целое число из stdin (in C)
- 14. Прочитайте несколько строк STDIN Java
- 15. Ctrl сигналы заполняют stdin с помощью EOF?
- 16. Повторное чтение в EOF от stdin
- 17. C# - вход Loop до EOF
- 18. Прочитайте одну строку из stdin
- 19. Сканирование координат до EOF
- 20. Прочтите весь текст из stdin
- 21. Поведение Stdin и EOF под консолью Windows
- 22. Обнаружение EOF в C++ из файла перенаправляется на STDIN
- 23. Подождите, пока EOF при использовании stdin
- 24. прочитайте значение в дескрипторе файла stdin 0 в C
- 25. Как отправить EOF на stdin в paramiko?
- 26. Чтение строки в C++ до EOF
- 27. Сторнирование stdin в C
- 28. (C/C++) EOF в windows7
- 29. Весь файл не читается в C (EOF встречается неожиданно)
- 30. чтение до EOF от стандартного ввода в c
«Или я должен просто читать n символов каждый раз и отправлять его в функцию обновления состояния для каждого хэша?» - Да. –
Второй вариант (отправьте n символов одновременно, а затем окончательный, когда закончите), как я это сделаю. –
Сведения могут быть специфичны для операционной системы. –