(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Системное программирование, стандартная библиотека ввода-вывода

Все программы должны соответствовать принятому стилю кодирования.

Все возвращаемые функциями значения должны проверяться. В случае ошибок выполнение программы должно аварийно завершаться с выдачей сообщения об ошибке и кодом завершения EXIT_FAILURE.

5. Стандартная библиотека ввода-вывода

  1. Создайте аналог программы 3.1 (копирование файла) с использованием потоковых фунций fopen(), fread(), fwrite(), fclose().
  2. Измерьте время работы предыдущей программы при чтении блоками по 1 байт, 1 Кб, 1 Мб, st_blksize из результата stat().
  3. Добавьте отключение буферизации в программу для предыдущего задания и проведите те же измерения с отключенной буферизацией.
  4. Создайте программу, в которой посимвольно с использованием фунции fgetc() читается указанный в командной строке файл, прочитанные символы выводятся в поток stdout, разделенные пробелами (например, для содержимого файла "Hello, world!" должно получиться "H e l l o , w o r l d ! "). Убедитесь, что, если файл содержит кириллицу в UTF-8, то результат получается некорректный.
  5. Модифицируйте программу из предыдущего примера с использованием функции fgetwc(). Убедитесь, что программа корректно работает, если файл содержит символы в UTF-8.
  6. Создайте программу для определения количества символов в строке UTF-8. Строка передается как аргумент командной строки.