![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Compositum |
|
||||
![]() Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Добрый день. Читаю Брайна Кернигана "Язык программирования C" 2-е издание. По ходу чтения возникают некоторые вопросы.
1. Код копирования файлов:
Непонятные моменты: 1.1. Я не понял, откуда именно getchar считывает символы? Ведь источник (файл) не указан.... 1.2. Куда именно putchar записывает символ? Ведь целевой файл/массив не указан... Если символы считываются из консоли и записываются в консоль, то EOF однозначно не будет найден (насколько я понимаю). 2. Ещё один фрагмент кода:
Но ведь метод main определён не как int main(). Т.е. если перед функцией не указано, какой тип значения она должна возвращать, то по умолчанию подразумевается int? Если "да", то почему нет ошибки, когда в методе main() отсутствует оператор return число? |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
1.1 и 1.2. когда запускается консольное приложение открыто 3 файла: stdin, stdout и stderr. Все функции ввода/вывода, у которых не указан файл явно работают с первыми двумя, но perror - с третьим. Первый - стандартный ввод (клавиатура), второе - стандартный вывод (экран), третье - стандартный вывод ошибок (тоже экран, но не буферизированный). Их можно изменять при запуске: program.exe <input.txt >output.txt 2> error.txt. Можно и так: program.exe < input.txt >output.txt 2>&1 (означает перенаправить вывод ошибок в стандартный вывод). А можно стандартный вывод одной программы использовать, как стандартный ввод другой (используется в основном в *nix, так как там все грамотно изначально задумано): ls | sort > sort-directory-content.txt, ls - сделать листинг текущего каталога, sort - сортировать стандартный ввод.
EOF - это Ctrl-Z + Enter в Windows или Ctrl-D в *nix. 2. функция (не метод! методы - это функции-члены класса) main() определена по стандарту как int main(). Да и вообще, язык Си предполагает, что если не указан тип возвращаемого значения, то он int. Отсутствие предупреждения при отсутствии return в main - это обход стандартной ошибки программирования. return должен быть. |
|||
|
||||
Compositum |
|
|||
![]() Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
спасибо.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |