
- •Загальні положення
- •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 Контрольний приклад
- •Перелік посилань
6 Файлові потоки мови с
6.1 Мета роботи
6.2 Вказівки щодо організації самостійної роботи студентів
Поток является программной надстройкой над файлом, предоставляющей программисту дополнительный сервис. Схема работы с потоком такая же, как и с файлом: открыть поток, выполнить чтение и/или запись, закрыть поток.
Открывает поток вместе с ассоциированным файлом функция
FILE* fopen(const char *filename, const char *mode )
Функция получает имя filenameфайла, ассоциированного с потоком, и возвращает указатель на поток, который идентифицирует его в последующих операциях.
В строке режимов modeмогут находиться следующие символы:
r — открыть только для чтения.
w — создать для записи. Существующий файл будет перекрыт новым файлом.
a — открыть для дозаписи, или создать для записи, если файла нет
+ — операции будут выполняться с уже существующим файлом.
t — текстовый режим (обработка символов CR-LF).
b — двоичный режим (никакой обработки).
При отсутствии в строке символов b или t, режим определяется глобальной переменной _fmode, определенной в заголовочном файле fcntl.h.
FILE — это управляющая структура для потока, объявленная в stdio.h. Она не предназначена для прямого использования.
Помимо совместного открытия потока и файла (fopen), можно открыть поток и ассоциировать его с уже открытым файлом (fdopen), открыть файл и ассоциировать его с уже открытым потоком (freopen).
Закрывает поток и выгружает буферы функция
int fclose ( FILE *stream )
Функция возвращает 0 при успехе и константу EOF при ошибке.
Функция int fcloseall() закрывает все открытые потоки, кроме стандартных: stdin, stdout, stdprn, stderr и stdaux.
Ввод и вывод символов
Чтение символа из потока выполняется функцией
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();