
- •Загальні положення
- •1.1 Мета роботи
- •1.2 Методичні вказівки до організації самостійної роботи студентів
- •1.2.2 Структура програми
- •If (а) оператор 1 ;
- •1.3 Контрольні запитання
- •1.4 Варіанти індивідуальних завдань
- •2Розв’язання задач з використанням масивів
- •2.1 Мета роботи
- •2.2 Методичні вказівки до організації самостійної роботи студентів
- •Приклад 2.1 Знайти у масиві mas найменший елемент та його індекс.
- •Приклад 2.2Відсортувати масив mas дійсних чисел розміром 10 елементів за зменшенням.
- •2.3 Контрольні запитання а завдання
- •3.4 Варіанти індивідуальних завдань
- •3Робота з рядками
- •3.1 Мета роботи
- •3.2 Методичні вказівки до організації самостійної роботи студентів
- •3.3 Контрольні запитання та завдання
- •4Робота зі структурами
- •4.1 Мета роботи
- •4.2 Методичні вказівки до організації самостійної роботи студентів
- •4.3 Контрольні запитання та завдання
- •4.4 Варіанти індивідуальних завдань
- •5Використання функцій при розробці програм
- •5.1 Мета роботи
- •5.2 Методичні вказівки по організації самостійної роботи студентів
- •5.3 Контрольні запитання та завдання
- •5.4 Варіанти індивідуальних завдань
- •6 Файлові потоки мови с
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •3.7 Контрольний приклад
- •7 Директиви препроцесора. Багатомодульне програмування
- •7.1 Мета роботи
- •7.2 Вказівки щодо організації самостійної роботи студентів
- •7.3 Порядок виконання роботи
- •7.4 Контрольні запитання та завдання
- •7.5 Завдання
- •7.6 Варіанти завдань
- •7.7 Контрольний приклад
- •Перелік посилань
Ввод и вывод записей
Чтение записей из потока выполняется функцией
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
ptr - указатель на буфер в памяти, принимающий записи
size - размер записи в байтах
n - количество читаемых записей
Функция возвращает количество прочитанных записей, которое может быть и нулевым.
Замечание.Типsize_tопределен в файлеstdio.hкакunsignedint.
Вывод записей в поток выполняется функцией
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
ptr - указатель на буфер в памяти, содержащий записи;
size - размер записи в байтах;
n - количество выводимых записей.
Функция возвращает количество выведенных записей, которое может быть и нулевым.
Управление указателем файла
Чтение и запись выполняются в том месте файла, где находится указатель файла. Установить указатель можно функцией
int fseek(FILE *stream, long offset, int whence)
offset - смещение указателя;
whence – способ отсчета смещения (в переводе whence означает «откуда» ).
Функция возвращает 0 при успехе. При ошибке, вызванной невозможностью открыть файл или устройство, возвращает ненулевое значение. Другие ошибки не диагностируются.
Для указания точки отсчета смещения используют константы:
SEEK_SET — отсчет от начала файла;
SEEK_CUR — отсчет от текущей позиции указателя.
SEEK_END — отсчет от конца файла;
Функция
long ftell(FILE *stream)
возвращает текущую позицию указателя. При ошибке возвращает -1 и устанавливает глобальную переменную errno в ненулевое значение.
Замечание.Те же действия выполняются функциями fsetpos и fgetpos.
Пример.Определить длину файла xxx.bin.
FILE *in = fopen("c:\\xxx.bin","rb");
if (!in) return;
fseek(in, 0, SEEK_END); // ставимуказательвконецфайла
cout << ftell(in); // определяем позицию указателя
Состояние потока
Макрос, проверяющий достижение конца файла потока:
int feof (FILE *stream)
возвращает не 0, если достигнут конец файла, и 0 — в противном случае.
Макрос, тестирующий индикатор ошибки потока:
int ferror(FILE *stream)
возвращает не 0, если обнаружена ошибка записи или чтения.
Однажды установленный индикатор ошибки сохраняется до выполнения функций clearerr, rewind или закрытия потока. Индикатор “конец файла” переустанавливается каждой операцией чтения.
Макрос, обнуляющий индикаторы ошибки и конца файла.
void clearerr(FILE *stream)
Макрос
void rewind(FILE *stream)
делает то же, что clearerr, а также устанавливает указатель в начало файла.
При возникновении ошибки глобальная переменная errno (определена в файлах errno.h, stddef.h, stdlib.h) получает ненулевой номер ошибки.
Форматированный вывод
Рассмотренные выше функции выводят информацию в поток без или почти без преобразования. Функция
int fprintf(FILE *stream, const char *format [, argument, ...])
преобразует выводимые данные [, argument, ...] в последовательность символов, руководствуясь строкой форматаformat. При успехе функция возвращает количество выведенных в поток байт, при неудаче — константу EOF. Квадратные скобки говорят о необязательности аргумента
Строка формата содержит простые символы и спецификации формата. Простые символы копируются в выходной поток без изменения, спецификации применяются для форматирования остальных аргументов функции. Если аргументов меньше, чем спецификаций, последствия непредсказуемы. Если аргументов больше, чем спецификаций, лишние аргументы игнорируются.
Общий вид спецификации формата следующий:
%[флаги][ширина][.точность][размер]тип
флаги — признаки выравнивания, использования знаков, десятичной точки, конечных нулей, 8-ичных и 16-ичных префиксов;
ширина — минимальное число печатаемых символов с учетом пробелов и нулей;
точность — максимальное число печатаемых символов (для целых — минимальное число цифр);
размер — определяет размер аргумента;
тип — символ спецификации типа — обязательный элемент формата.
Пример.Вывести в текстовый файл таблицу умножения на 5.
FILE *out = fopen("c:\\xxx.txt","wt");
for (int i = 2; i < 10; i++)
fprintf(out, "%1d x 5 = %2d\n", i, i * 5);
fclose(out);