Функция удаления файла

Синтаксис:

int remove(const char *filename);

Эта функция удаляет с диска файл, указатель на который хранится в файловой переменной filename. Функция возвращает ненулевое значение, если файл невозможно удалить.

 

Функция переименования файла

Синтаксис:

int rename(const char *oldfilename, const char *newfilename);

Функция переименовывает файл; первый параметр – старое имя файла, второй – новое. Возвращает 0 при неудачном выполнении.

 

Функция контроля конца файла

Для контроля достижения конца файла есть функция feof.

int feof(FILE * filename);

Функция возвращает ненулевое значение, если достигнут конец файла.

Функции ввода-вывода данных файла

 

Символьный ввод-вывод

Для символьного ввода-вывода используются функции:

int fgetc(FILE *fp);

где fp – указатель на поток, из которого выполняется считывание.

 

Функция возвращает очередной символ в формате int из потока fp. Если символ не может быть прочитан, то возвращается значение EOF.

int fputc(int c, FILE*fp);

где fp – указатель на поток, в который выполняется запись;

c – переменная типа int, в которой содержится записываемый в поток символ.

Функция возвращает записанный в поток fp символ в формате int. Если символ не может быть записан, то возвращается значение EOF.

Пример 1.

#include "stdafx.h"

#include “iostream”

using namespace std;

int main()

{

FILE *f;

int c;

char *filename="t.txt";

if ((f=fopen(filename,"r"))==0)

perror(filename);

else

while((c = fgetc(f))!=EOF)

putchar(c);

//вывод с на стандартное устройство вывода

fclose(f);

system("pause");

return 0;

}

 

Строковый ввод-вывод

 

Для построчного ввода-вывода используются следующие функции:

char *fgets(char *s, int n, FILE *f);

 

где char *s – адрес, по которому размещаются считанные байты;

 

int n – количество считанных байтов;

 

FILE *f – указатель на файл, из которого производится считывание.

 

Прием байтов заканчивается после передачи n-1 байтов или при получении управляющего символа '\n'. Управляющий символ тоже передается в принимающую строку. Строка в любом случае заканчивается '\0'. При успешном завершении считывания функция возвращает указатель на прочитанную строку, при неуспешном – 0.

int fputs(char *s, FILE *f);

 

где char *s – адрес, из которого берутся записываемые в файл байты;

 

FILE *f – указатель на файл, в который производится запись.

 

Символ конца строки ('\0') в файл не записывается. Функция возвращает EOF, если при записи в файл произошла ошибка, при успешной записи возвращает неотрицательное число.

 

Пример 2. Построчное копирование данных из файла f1.txt в файл f2.txt.

#include"stdafx.h"

#include “iostream"

using namespace std;

#define MAXLINE 255 //максимальная длина строки

int main()

{

//копирование файла in в файл out

FILE *in, //исходный файл

*out; //принимающий файл

char buf[MAXLINE];

//строка, с помощью которой выполняется копирование

in=fopen("f1.txt","r");

//открыть исходный файл для чтения

out=fopen("f2.txt","w");

//открыть принимающий файл для записи

while(fgets(buf, MAXLINE, in)!=0)

//прочитать байты из файла in в строку buf

fputs(buf, out);

//записать байты из строки buf в файл out

fclose(in); //закрыть исходный файл

fclose(out);//закрыть принимающий файл

system("pause");

return 0;

}

 

Ход работы

 

1. Создайте новое консольное приложение С++ (Файл→Создать→Проект→ “ Консольное приложение Win32).

2. Напишите программу обнаружения и вывода ошибки при открытии файла.

Пояснение к коду:

В файле stdio.h определена константа EOF, которая сообщает об окончании файла (отрицательное целое число).

 

При открытии файла могут возникать следующие ошибки:

· файл, связанный с потоком не найден (при чтении из файла);

· диск заполнен (при записи);

· диск защищен от записи (при записи) и т. п.

В этих случаях указатель на поток приобретет значение NULL (0). Указатель на поток, отличный от аварийного, не бывает равен NULL.

 

Для вывода сообщения об ошибке при открытии файла используется стандартная библиотечная функция из файла:

void perror (const char*s);

 

Функция perror() выводит строку символов, адресуемую указателем s, за которой размещаются: двоеточие, пробел и сообщение об ошибке.

 

3. Внимательно изучите код и комментарии к нему.

4. Выполните примеры 1 и 2 из теоретической части. Внимательно построчно разберите код.

5. Напишите программу подсчета количества символов в заданном тексте и файловый ввод-вывод данных. Работа программы должна включать ввод пользователем с клавиатуры имен входного и выходного файлов. Результат работы программы сохраняется в выходном файле, а также выводится на экран.

 

6. Внимательно изучите код и комментарии к нему.

7. Выполните отладку (F5) и проверьте работоспособность программы.

 

По аналогии с предыдущими примерами напишите программный код (текстовые исходные файлы задаются самостоятельно).

ВАРИАНТ:

0. определения чаще всего встречающейся в заданном файле буквы;

1. удвоения в содержимом файла каждой литеры(символа);

2. подсчёта числа цифр в данном файле и их суммы;

3. подсчета количества слов в файле (отделяются пробелами);

4. подсчитать количество строк в файле

5. в выходной файл записать исходный без разбивки по строкам

6. разбить входной файл(состоящий из одной строки не более 256 символов) на файл, содержащий информацию из входного, разбитого на строки, каждая размером соответствующая числу, вводимому с клавиатуры;

7. подсчитать в исходном файле количество цифр и символов. В выходной файл записать те данные, количество которых больше.

8. записать в выходной файл данные из исходного без символов, которые будут указаны при вводе с клавиатуры(может быть несколько но не более 5)

9. записать в выходной файл данные из исходного. Данные выходного файла должны располагаться в следующем порядке: сначала все цифры, а потом все остальные символы.

 

Покажите выполненную работу преподавателю.

Ответьте на контрольные вопросы.

 

Контрольные вопросы:

1. Дайте определение понятию “файл”.

2. Дайте определение понятию “поток”.

3. Перечислите функции открытия, закрытия, удаления, переименовывания файла?

4. Гденаходится описание структуры FILE?

5. Каково назначение fp в строке fp =fopen(ИмяФайла, РежимОткрытия);?

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: