- •Институт математики, экономики и механики кафедра математического обеспечения компьютерных систем в. С. Макогон, и. Н. Лисицына
- •Оглавление
- •Введение
- •Основныетипы данных, операции и выражения
- •Описание переменных.
- •Операции , выражения и операторы.
- •3. Операторы управления программой. Базовые управляющие структуры.
- •Операторы ветвления Условный оператор if
- •Оператор - переключатель
- •Операторы повторения (цикла).
- •4. Программирование алгоритмов линейной структуры.
- •5. Программирование разветвляющихся алгоритмов (оператор if).
- •6. Программирование разветвляющихся алгоритмов (оператор switch)
- •Оператор for
- •Цикл с постусловием do -while
- •8. Итерационные циклы
- •Задачи для самостоятельного решения
- •9. Программирование алгоритмов с использованием функций
- •Основные понятия численного решения уравнений
- •10. Программирование алгоритмов с использованием массивов
- •11. Символьные переменные и строки. Обработка строк.
- •Другие средства ввода-вывода символов и строк
- •Массивы строк
- •12. Указатели
- •Массивы указателей
- •2. Описание метода трапеций
- •3. Программный комплекс
- •13. Структуры
- •Указатели на структуры
- •14. Файлы. Потоковый ввод-вывод
- •Функции для работы с файлами
- •Открытие файловых потоков
- •Закрытие файловых потоков
- •Удаление файлов
- •Переименование файлов
- •Реинициализация
- •Функции для ввода-вывода по символам
- •1 Вариант) содержит только буквы исходной строки
- •2 Вариант) перевернута по отношению к исходной
- •Двоичные (бинарные) файлы. Блочно-ориентированный ввод-вывод.
Закрытие файловых потоков
Когда работа с файловым потоком завершена, необходимо разорвать связь между потоком и ассоциированным с ним файлом, для этого применяются функции закрытия потока fclose() и fcloseall().
Прототип:
int fclose(FILE *_stream);
Описание:
Функция fclose() закрывает указанный поток _stream. Все буфера, связанные с потоком _stream, перед закрытием сбрасываются (если файл был открыт для вывода–функция “выталкивает” на диск все данные из внутреннего буфера). Буфера, размещенные системой, освобождаются во время процесса закрытия. Буфера, назначенные функциями setbuf() или setvbuf(), не освобождаются автоматически.
Возвращаемое значение:
Функция fclose() при успешном завершении возвращает 0. Если были обнаружены какие-либо ошибки, функция fclose() возвращает значение EOF.
Прототип:
int fcloseall(void);
Описание:
Функция fcloseall() закрывает все открытые потоки, исключая stdin и stdout, stdprn, stdaux и strerr.
Возвращаемое значение:
fcloseall() возвращает число закрытых потоков. При возникновении ошибки возвращает EOF.
Пример:
#include<stdio.h>
int main(void)
{
FILE *fp1,*fp2;
int streams_closed;
/* открыть два потока */
fp1 = fopen("DUMMY.ONE","w");
fp2 = fopen("DUMMY.TWO","w");
/* закрыть открытые потоки */
streams_closed = fcloseall();
if(streams_closed == EOF)
/* вывести сообщение об ошибке */
perror(" Ошибка ");
else
/* вывести результат работы функции */
printf("Было закрыто %d потока\n",streams_closed);
return 0;
}
Удаление файлов
Прототип:
int remove(char *_path);
Описание:
remove() удаляет файл, имя которого определяется параметром _path. Если файл был открыт, не забудьте его предварительно закрыть. Строка с именем файла может включать его полный маршрут.
Возвращаемое значение:
При успешном завершении remove() возвращает 0. При ошибке возвращает -1 и присваивает глобальной переменной errno одно из следующих значений:
ENOENT - Такого файла или директории нет.
EACCES - Доступ запрещен.
Пример:
#include <stdio.h>
int main(void)
{
char file[80];
/* запросить имя удаляемого файла */
printf("Введите имя удаляемого файла");
gets(file);
/* удалить файл */
if(remove(file)==0)
printf("Файл %s удален.\n", file);
else
perror("remove");
return 0;
}
Переименование файлов
Прототип:
int rename(char *_oldname,char *_newname);
Описание:
Функция rename() изменяет имя файла с _oldname на _newname. Если спецификация дисковода включена в имя _newname, то она должна быть той же, что и в _oldname.
Директории в маршруте (path) не обязательно должны быть теми же самыми, поэтому функцию rename() можно использовать для пересылки файла из одной директории в другую. Применять шаблоны не разрешается.
Возвращаемое значение:
При успешном переименовании файла функция rename() возвращает 0. В случае ошибки, возвращается -1, а глобальная переменная errno получает одно из следующих значений:
ENDENT - Маршрут или имя файла не найдены.
EACCES - Отказ доступа.
ENOTSAM - Не то же самое устройство.
Пример:
#include <stdio.h>
int main(void)
{
char oldname[80],newname[80];
/* запросить имя переименовываемого файла, и новое имя */
printf("Имя переименовываемого файла:");
gets(oldname);
printf("Новое имя:");
gets(newname);
if(rename(oldname,newname)==0)
printf("Файл переименован с %s в %s\n",oldname,newname);
else
perror("rename");
return 0;
}