Системное программирование, стандартная библиотека ввода-вывода
Все программы должны соответствовать принятому стилю кодирования.
- В начале файла - заголовок с автором и лицензией;
- Перед каждой функцией - комментарий с описанием функции и аргументов;
- Текст программы разбит на "абзацы" с комментарием перед каждым "абзацем".
Все возвращаемые функциями значения должны проверяться. В случае ошибок выполнение программы должно аварийно завершаться с выдачей сообщения об ошибке и кодом завершения EXIT_FAILURE.
Про Unicode, UTF-8, UCS-4, L"строка" и многобайтовые кодировки см. Спольски Д., Джоэл о программировании гл. 4 (стр. 45).
5. Стандартная библиотека ввода-вывода
- Реализовать пример отключения буферизации для потока stdout с помощью функции setvbuf()
- Реализовать пример работы функции fflush()
- Реализовать пример работы функции fopen() Имя файла для открытия получать из командной строки.
- Реализовать пример работы функции fclose() Имя файла для открытия получать из командной строки.
- Реализовать пример работы функции freopen(). Имя файла для открытия получать из командной строки.
- Реализовать пример работы функции fdopen(). Имя файла для открытия получать из командной строки.
- Реализовать пример работы функции fileno()
- Используя функцию fgetc() посимвольно читать данные из файла и выводить в stdout, разделяя символы пробелами (например, для содержимого файла "Hello, world!" должно получиться "H e l l o , w o r l d ! "). Убедиться, что, если файл содержит кириллицу в UTF-8, то результат получается некорректный. Имя файла для открытия получать из командной строки.
- Используя функцию fgetwc() посимвольно читать данные из файла и выводить в stdout, разделяя символы пробелами (например, для содержимого файла "Hello, world!" должно получиться "H e l l o , w o r l d ! "). Убедиться, что, программа корректно работает с файлами UTF-8. Имя файла для открытия получать из командной строки.
- Используя функцию fgets() построчно читать данные из файла и выводить в stdout. Убедиться, что, если файл содержит кириллицу в UTF-8, то результат может получиться некорректным. Имя файла для открытия получать из командной строки.
- Используя функцию fgetws() построчно читать данные из файла и выводить в stdout. Убедиться, что, программа корректно работает с файлами UTF-8. Имя файла для открытия получать из командной строки.
- Используя функцию fputc() посимвольно выводить в stdout строку "Hello, world!", разделяя символы пробелами (должно получиться "H e l l o , w o r l d !"). Убедиться, что для строки "Здравствуй, мир!" в UTF-8 программа работает некорректно.
- Используя функцию fputwc() посимвольно выводить в stdout строку "Здравствуй, мир!", разделяя символы пробелами (должно получиться "З д р а в с т в у й , м и р !").
- Реализовать пример работы функции fputs().
- Реализовать пример работы функции fputws().
- Реализовать пример работы функций fread() и fwrite().
- Повторить пример 3.20 (lseek() с именем файла и смещением из командной строки) используя функции стандартной библиотеки ввода-вывода (fopen(), fseek(), fputc(), fclose())
- Реализовать пример работы функции ftell().
- Реализовать пример работы функции printf() с фиксированными полями "ширина" и "точность" шаблона вывода printf() для числа с плавающей точкой. Если используется setlocale() обратите внимание на символ десятичного разделителя в выводе printf().
- Повторить предыдущий пример с использованием переменной "ширины" в шаблоне.
- Реализовать пример работы функции mkstemp().
- Реализовать пример работы функции tmpfile().