Так что я должен реализовать программу, которая работает с текстовым файлом (.txt), который был помещен в stdin следующим образом: ./program [argumets] <textfile.txt
без использования таких функций, как fopen, fscanf, malloc и т. Д. Я не знаю, как это сделать. Мне нужно работать с символами в этом текстовом файле (печатать их на экране, печатать максимальное/минимальное значение, сумму печати и т. Д.), А не с самим файлом, так что, может быть, кто-нибудь получил подсказку? Спасибо.Работа с stdin
ответ
Чтение из текстового файла, подобного этому, почти идентично чтению с клавиатуры. Настолько, что без каких-либо специальных трюков ваша программа не имеет никакого способа узнать, поступает ли вход от keyboarad или из файла.
Когда вам нужно использовать функцию, которая требует файл, есть stdin
, который так называемый «файловый указатель», и имеет тип FILE*
, такой же, как возвращаемый fopen
. Указатель файла принимается функциями, любимыми fscanf
(но вы можете просто позвонить scanf
) и fgets
(do NOT использовать gets
, он смертельно сломан и, наконец, удален из стандарта C11).
Если вам нужно использовать функции, которые принимают дескриптор файла, который является целым числом, и возвращаются, например, open
, и принимаются такими функциями, как read
, тогда номер дескриптора файла для стандартного ввода равен 0, но вы должны обычно использовать константа STDIN_FILENO
. И не смешивайте чтение из файлового дескриптора (небуферизованное) и читайте с FILE*
(буферизированный), потому что буферизация испортит полученные вами данные. Использование FILE*
, вероятно, лучше для большинства приложений.
Чтобы сделать это более конкретным, вы можете разработать свою программу так, чтобы вместо того, чтобы использовать <
для перенаправления входного файла, вы можете открыть входной файл в редакторе, скопировать его в буфер обмена, запустить приложение в терминале и вставьте файл ввода как текст в терминал.
- 1. Java: правильная работа с трубами как stdin
- 2. Confused как STDIN, STDOUT и STDERR работа
- 3. Работа с PHP Команда STDIN и proc_open и Node JS
- 4. Работа с нулевыми символами в stdin в C++
- 5. Как воспроизвести `stdin = sys.stdin` с` stdin = PIPE`?
- 6. Перенаправить stdin в stdin
- 7. Разница между `STDIN` и` $ stdin`
- 8. Обработка stdin с торнадо
- 9. Проблема с чтением STDIN
- 10. Wrap STDIN с символами
- 11. читать с stdin python
- 12. Pylint: прочитайте с stdin?
- 13. Использование STDIN с AllocConsole()
- 14. /DEV/STDIN с herestring
- 15. Вложение fgets с stdin
- 16. Как перенаправить с терминала stdin в процесс stdin
- 17. Perl: Запустите программу с $ fd как stdin, не касаясь STDIN
- 18. Использование неопределенной константы STDIN - предполагается 'STDIN'
- 19. Копирование stdin в буфер
- 20. Is stdin, 0, STDIN - это разные вещи
- 21. Захват STDIN
- 22. stdin → stdout?
- 23. Перенаправление stdin
- 24. Читать с stdin with monkeyrunner
- 25. Перенаправить скрипт stdin с параметрами
- 26. Процесс stdin с использованием C
- 27. Использование setvbuf() с потоком STDIN
- 28. команда чтения bash с stdin
- 29. Режим MozJPEG STDIN с переключателями
- 30. Использование stdin вместе с ncurses
Основная функция обработки файлов поможет вам. 'Open()' – Haris
[хорошая ссылка может быть полезна] (http://en.cppreference.com/w/c/io)? –
Вам не нужно ничего делать, чтобы получить от stdin. Он автоматически открывается для вас, вы можете просто прочитать его. – Barmar