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

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

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

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

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

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

Про Unicode, UTF-8, UCS-4, L"строка" и многобайтовые кодировки см. Спольски Д., Джоэл о программировании гл. 4 (стр. 45).

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

  1. Реализовать пример отключения буферизации для потока stdout с помощью функции setvbuf()
  2. Реализовать пример работы функции fflush()
  3. Реализовать пример работы функции fopen() Имя файла для открытия получать из командной строки.
  4. Реализовать пример работы функции fclose() Имя файла для открытия получать из командной строки.
  5. Реализовать пример работы функции freopen(). Имя файла для открытия получать из командной строки.
  6. Реализовать пример работы функции fdopen(). Имя файла для открытия получать из командной строки.
  7. Реализовать пример работы функции fileno()
  8. Используя функцию fgetc() посимвольно читать данные из файла и выводить в stdout, разделяя символы пробелами (например, для содержимого файла "Hello, world!" должно получиться "H e l l o , w o r l d ! "). Убедиться, что, если файл содержит кириллицу в UTF-8, то результат получается некорректный. Имя файла для открытия получать из командной строки.
  9. Используя функцию fgetwc() посимвольно читать данные из файла и выводить в stdout, разделяя символы пробелами (например, для содержимого файла "Hello, world!" должно получиться "H e l l o , w o r l d ! "). Убедиться, что, программа корректно работает с файлами UTF-8. Имя файла для открытия получать из командной строки.
  10. Используя функцию fgets() построчно читать данные из файла и выводить в stdout. Убедиться, что, если файл содержит кириллицу в UTF-8, то результат может получиться некорректным. Имя файла для открытия получать из командной строки.
  11. Используя функцию fgetws() построчно читать данные из файла и выводить в stdout. Убедиться, что, программа корректно работает с файлами UTF-8. Имя файла для открытия получать из командной строки.
  12. Используя функцию fputc() посимвольно выводить в stdout строку "Hello, world!", разделяя символы пробелами (должно получиться "H e l l o , w o r l d !"). Убедиться, что для строки "Здравствуй, мир!" в UTF-8 программа работает некорректно.
  13. Используя функцию fputwc() посимвольно выводить в stdout строку "Здравствуй, мир!", разделяя символы пробелами (должно получиться "З д р а в с т в у й , м и р !").
  14. Реализовать пример работы функции fputs().
  15. Реализовать пример работы функции fputws().
  16. Реализовать пример работы функций fread() и fwrite().
  17. Повторить пример 3.20 (lseek() с именем файла и смещением из командной строки) используя функции стандартной библиотеки ввода-вывода (fopen(), fseek(), fputc(), fclose())
  18. Реализовать пример работы функции ftell().
  19. Реализовать пример работы функции printf() с фиксированными полями "ширина" и "точность" шаблона вывода printf() для числа с плавающей точкой. Если используется setlocale() обратите внимание на символ десятичного разделителя в выводе printf().
  20. Повторить предыдущий пример с использованием переменной "ширины" в шаблоне.
  21. Реализовать пример работы функции mkstemp().
  22. Реализовать пример работы функции tmpfile().