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