Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник_Главы 7-9.doc
Скачиваний:
7
Добавлен:
15.08.2019
Размер:
2.6 Mб
Скачать

Глава 8 Файлы.

Файл – это именованный объект, хранящий данные (программа или любая другая информация) на каком-либо носителе. Над файлом можно выполнить функции доступа, которые позволяют проверять, извлекать или изменять информацию, содержащуюся в нем. Перед работой с файлом его необходимо обязательно открыть, а после работы – закрыть.

Перед работой с файлом его необходимо открыть. В языке С для открытия файла обычно используется функция fopen(), которая при успешном открытии возвращает указатель на структуру типа FILE, называемый указателем на файл. Эта структура связана с физическим файлом и содержит всю необходимую информацию для работы с ним (указатель на текущую позицию в файле, тип доступа и др.). Возвращаемое функцией значение нужно сохранить и использовать для ссылки на открытый файл. Если произошла ошибка при открытии файла, то возвращается NULL. После работы с файлом он должен быть закрыт функцией fclose().

Примеры составления программ на языке с.

Пример 8.1

Сформировать файл последовательности n - чисел. Определить

количество положительных элементов, содержащихся в

сформированном файле.

/**************************************************/

/* Файлы */

/* Сформировать файл последовательности */

/* n - чисел. Определить количество */

/* положительных элементов, содержащихся */

/* в сформированном файле. */

/**************************************************/

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{

clrscr();

FILE *f1;

int a,i,n,kol=0;

// Создание файла f1 для записи

f1=fopen("d:\\Nataly\\f1.txt","w+");

if (f1==NULL) // если произошла ошибка

{ printf("Файл невозможно открыть.");

exit(1); // выход из программы

}

printf("\n\t Введите количество элементов:");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("\t Введите %d-й элемент:",i);

scanf("%d",&a); // ввод элемента

fprintf(f1," %d ",a); //запись элемента в файл

}

// Закрытие файла

fclose(f1);

// Чтение и печать созданого файла

f1=fopen("d:\\Nataly\\f1.txt","r+");

printf("\n \t Вывод файла f1: \n\t");

for(i=0;i<n;i++)

{

fscanf(f1,"%d",&a); // чтение элемента из файла

printf(" %d ",a); // вывод элемента на экран

if (a>0) kol++; // подсчет положит.элементов

}

fclose(f1); // Закрытие файла

printf("\n Кол-во положит.элементов файла =%d",kol);

getch();

}

Результат работы программы.

Введите количество элементов:10

Введите 0-й элемент:5

Введите 1-й элемент:-8

Введите 2-й элемент:-5

Введите 3-й элемент:7

Введите 4-й элемент:12

Введите 5-й элемент:6

Введите 6-й элемент:-45

Введите 7-й элемент:90

Введите 8-й элемент:33

Введите 9-й элемент:-77

Вывод файла f1:

5 -8 -5 7 12 6 -45 90 33 -77

Кол-во положит.элементов файла =6

Пример 8.2

Ввести строку символов в файл F, а затем скопировать его содержимое в файл G и добавить в конец файла G фамилию и имя.

/****************************************************/

/* Текстовые файлы */

/* Ввести строку символов в файл F, а затем */

/* скопировать его содержимое в файл G, */

/* добавив в конец файла фамилию и имя */

/****************************************************/

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include <stdlib.h>

#define size 50

void main()

{

FILE *F,*G;

char str[size],str_dob[size];

clrscr();

// Создание файла F

F=fopen("d:\\Nataly\\F.txt","w+");

if (F==NULL)

{

printf("Файл невозможно открыть.");

exit(1);

}

printf(" Введите строку символов:\n");

gets(str);

// запись строки в файл F

fputs(str,F);

fclose(F); // закрываем файл F

// Чтение файла F и запись в файл G

// открытие файлов

F=fopen("d:\\Nataly\\F.txt","r+"); // для чтения

G=fopen("d:\\Nataly\\G.txt","w+"); // для записи

if (G==NULL)

{

printf("Файл невозможно открыть.");

exit(1);

}

printf("\n Вывод файла F: ");

// чтение строки из файла

fgets(str,strlen(str)+1,F);

puts(str); // вывод на экран

// запись в файл G

fputs(str,G);

// Закрытие файлов F и G

fclose(F);

fclose(G);

// Добавление в конец файла

// фамилии и имени

G=fopen("d:\\Nataly\\G.txt","a+");

printf("\n Добавление в конец файла G: ");

printf("\n\t Введите фамилию и имя:");

gets(str_dob); // ввод с клавиатуры

fputs(str_dob,G); // запись в файл

fclose(G); // закрытие файла G

// Открытие и чтение файла G

G=fopen("d:\\Nataly\\G.txt","r+");

// чтение строки из файла

fgets(str,strlen(str)+strlen(str_dob)+1,G);

printf("\n Файл G:\n");

puts(str); // вывод на экран

// Закрытие файла G

fclose(G);

getch();

}

Результат работы программы.

Введите строку символов:

Белая береза под моим окном...

Вывод файла F: Белая береза под моим окном...

Добавление в конец файла G:

Введите фамилию и имя: Пушкин А.С.

Файл G:

Белая береза под моим окном... Пушкин А.С.