- •Методичні вказівки
- •1 Директивипрепроцесора. Багатомодульне програмування
- •1.1 Мета роботи
- •1.2 Вказівки щодо організації самостійної роботи студентів
- •1.3 Порядок виконання роботи
- •1.4 Контрольні запитання та завдання
- •1.5 Завдання
- •1.6 Варіанти завдань
- •1.7 Контрольний приклад
- •2.1 Мета роботи
- •2.2 Вказівки щодо організації самостійної роботи студентів
- •2.3 Порядок виконання роботи
- •2.4 Контрольні запитання та завдання
- •2.5 Завдання
- •2.6 Варіанти завдань
- •2.7 Контрольний приклад
- •3 Файлові потоки мови с
- •3.1 Мета роботи
- •3.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •3.3 Порядок виконання роботи
- •3.4 Контрольні запитання та завдання
- •3.5 Завдання
- •3.6 Варіанти завдань
- •3.7 Контрольний приклад
- •4 Перегрузка операцій
- •4.1 Мета роботи
- •4.2 Вказівки щодо організації самостійної роботи студентів
- •4.3 Порядок виконання роботи
- •5.1 Мета роботи
- •5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты
- •Инкапсуляция
- •Конструктор
- •Деструктор
- •Указатели на объекты
- •Операции new и delete
- •5.3 Порядок виконання роботи
- •5.4 Контрольні запитання та завдання
- •5.5 Завдання
- •5.6 Варіанти завдань
- •5.7 Контрольний приклад
- •6 Наслідування, поліморфізм, інкапсуляция
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Наследование
- •Уровни доступа
- •Виртуальные функции
- •Механизм работы виртуальных функций
- •Полиморфизм
- •Множественное наследование
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •6.7 Контрольний приклад
- •Рекомендована література
- •61166 Харків, просп. Леніна, 14.
Ввод и вывод символов
Чтение символа из потока выполняется функцией
int fgetc(FILE *stream)
Запись символа в поток выполняется функцией
int fputc(int c, FILE *stream)
Обе функции возвращают код символа, а при ошибке возвращают EOF.
Чтение символа из стандартногопотока stdin выполняется функцией
int fgetchar(void)
Запись символа в стандартный поток stdout выполняется функцией
int fputchar(int c)
Пример.Скопировать файл xxx.bin в файл yyy.bin.
FILE *in = fopen ("c:\\xxx.bin", "rt");
FILE *out = fopen ("c:\\yyy.bin", "wt");
if (!in) return;
while (!feof(in))
fputc(fgetc(in), out);
fcloseall();
Ввод и вывод строк
Чтение строки из потока выполняется функцией
char *fgets(char *s, int n, FILE *stream)
Первый параметр указывает на буфер, принимающий строку, второй – задает размер буфера. Функция возвращает указатель на буфер или 0 при ошибке.
Чтение прекращается, когда достигнут конец строки или прочитано n-1 символов из файла. Строка в буфере замыкается символами '\n' и нулевым. Указатель файла перемещается за символы CR-LF.
Запись строки в поток выполняется функцией
char *fputs(char *s, FILE *stream)
Функция возвращает указатель на последний записанный символ или EOF при ошибке. Терминальный символ строки не копируется.
Пример.Скопировать текстовый файл xxx.txt в файл yyy.txt по строкам.
const int n = 100;
char buf [n];
FILE *in = fopen("c:\\xxx.txt","r");
FILE *out = fopen("c:\\yyy.txt","w");
if (!in) return;
while (!feof(in)) {
fgets(buf, n, in);
fputs(buf, out);
}
fcloseall();
Ввод и вывод записей
Чтение записей из потока выполняется функцией
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); // определяем позицию указателя