Разделы презентаций


ФАЙЛЫ

Содержание

Во время работы программа может обмениваться данными с какими-либо внешними устройствами: клавиатурой, монитором, жестким диском и т. д. Для такого обмена данными используется понятие файл Файл – это информация, размещенная на

Слайды и текст этой презентации

Слайд 1ФАЙЛЫ

ФАЙЛЫ

Слайд 2Во время работы программа может обмениваться данными с какими-либо внешними

устройствами: клавиатурой, монитором, жестким диском и т. д. Для такого

обмена данными используется понятие файл

Файл – это информация, размещенная на каком-либо носителе (диске) или в буфере ввода/вывода устройства (клавиатура).

Для обмена данными файл должен быть открыт, по завершении этого процесса – закрыт.

Во время работы программа может обмениваться данными с какими-либо внешними устройствами: клавиатурой, монитором, жестким диском и т.

Слайд 3Поток – это логический канал, предназначенный для выполнения операций ввода/вывода.

Каждому файлу при его открытии ставится в соответствие поток.
В языке

C существуют стандартные потоки:

stdin – стандартный консольный ввод (клавиатура по умолчанию);

stdout – стандартный консольный вывод (монитор по умолчанию);

Стандартные потоки открываются при каждом запуске программы.
Поток – это логический канал, предназначенный для выполнения операций ввода/вывода. Каждому файлу при его открытии ставится в

Слайд 4
Для работы с файлами в программах на C используется заголовочный

файл stdio.h, в котором объявлен специальный тип данных – структура

FILE, предназначенная для хранения атрибутов (параметров) файлов (указатель текущей позиции файла, признак конца файла, флаги индикации ошибок, сведения о буферизации и др.).

Поля структуры типа FILE доступны с помощью специальных функций.
Для организации работы с файлом используется определенная последовательность действий.

Объявление потока – переменной-указателя на структуру типа FILE, в которой будут храниться атрибуты файла

FILE *fl;// *fl – указатель на файл.
Для работы с файлами в программах на C используется заголовочный файл stdio.h, в котором объявлен специальный тип

Слайд 5Открытие файла
fl=fopen("путь к файлу","режим работы файла");
Параметр "путь к файлу" указывает

размещение файла на диске и обязательно содержит имя файла и

может содержать имя логического диска и путь.
Параметр "режим работы файла" показывает, как будет использоваться файл:
"w" – для записи данных (вывод);
"r" – для чтения данных (ввод);
"a" – для добавления данных к существующим записям.
Примеры:
FILE *f_in,*_out;
f_in=fopen("My_file1","r"); f_out=fopen("My_file2","w");
Функция fopen() возвращает значение указателя на структуру типа файл. Если файл по каким-либо причинам не открывается, функция fopen() возвращает значение NULL.
Открытие файлаfl=fopen(

Слайд 6Особенности режимов открытия файлов:
Если файл открывается в режиме записи данных

"w", то указатель текущей позиции устанавливается на начало файла. Если

указанный в функции fopen() файл не существует, то он создается. Необходимо помнить, что открытие существующего файла в режиме "w" приводит к уничтожению его старого содержания.
Открытие файла для чтения в режиме "r" возможно только для созданного ранее файла, при этом указатель текущей позиции устанавливается на начало файла. Если открываемый на чтение файл не существует, функция fopen() возвращает пустой указатель со значением NULL.
Если файл открывается в режиме добавления данных "a", то указатель текущей позиции устанавливается на конец файла. Данные, ранее помещенные в файл, остаются без изменений. Если указывается несуществующий файл, то он создается заново.
Также можно указать дополнительные условия режима открытия файла:
"b" – двоичный поток;
"t" – текстовый поток;
"+" – обновление файла.
Для поочередного выполнения чтения и записи в режиме "+" необходимо ручное позиционирование курсора.
Особенности режимов открытия файлов:Если файл открывается в режиме записи данных

Слайд 7Обработка открытого файла

Обработка открытого файла

Слайд 8Проверка признака конца файла
Так как при каждой операции ввода/вывода

происходит перемещение указателя текущей позиции в файле, в какой-то момент

указатель достигает конца файла. Структура типа FILE имеет поле – индикатор конца файла. Функция feof() проверяет состояние индикатора конца файла и возвращает значение 0, если конец файла не был достигнут, или значение, отличное от нуля, если был достигнут конец файла. Функция имеет единственный аргумент – указатель на поток типа FILE. Вызов функции:

if (! feof(f_in))…

проверяет, что конец файла еще не достигнут.
Проверка признака конца файла Так как при каждой операции ввода/вывода происходит перемещение указателя текущей позиции в файле,

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

функции fclose(). При этом разрывается связь указателя на файл c

внешним набором данных. Освободившийся указатель можно использовать для другого файла. Формат вызова функции:
fclose(f_in);

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

Слайд 10Функции ввода/вывода
Простейший способ выполнить чтение из файла или запись в

файл – использовать функции getc() или putc().

Функция getc() выбирает из

файла очередной символ; ей нужно только знать указатель на файл, например:
char Symb=getc(f_in);

Если при обработке достигается конец файла, то функция getc() возвращает значение EOF(end of file).

Функция putc() заносит значение символа Symb в файл, на который указывает f_out. Формат вызова функции:
putc(Symb,f_out);
Функции ввода/выводаПростейший способ выполнить чтение из файла или запись в файл – использовать функции getc() или putc().Функция

Слайд 11Пример 1. Текст из файла my_char.txt выводится на экран. Если

файл не найден, на экран выводится сообщение "File not found!":
#include


int main(void){
FILE *ptr;
unsigned char ch;
if ((ptr=fopen("my_char.txt","r"))!=NULL)
{
ch=getc(ptr);
while (!feof(ptr))
{
printf("%c",ch);
ch=getc(prt);
}
fclose(ptr);
} else printf("\nFile not found!");
return 0;
}
Пример 1. Текст из файла my_char.txt выводится на экран. Если файл не найден, на экран выводится сообщение

Слайд 12Пример 2. Записать в файл буквы, вводимые с клавиатуры. Ввод

продолжается до нажатия клавиши F6 или CTRL/z (ввод символа EOF

– конца файла):

#include
int main(void)
{
char c;
FILE *out;
out=fopen("Liter","w");
while ((c=getchar( ) )!=EOF)
fputc(c,out);

fclose(out);

return 0;
}

Пример 2. Записать в файл буквы, вводимые с клавиатуры. Ввод продолжается до нажатия клавиши F6 или CTRL/z

Слайд 13Функции fscanf() и fprintf() выполняют форматированный ввод/вывод.
Чтение из файла

выполняет функция fscanf():

fscanf(f_in,[строка формата],[список адресов переменных]);

Функция возвращает количество введенных значений

или EOF.

Запись в файл осуществляет функция fprintf():

fprintf(f_out,[строка формата],[список переменных, констант]);

Возвращает количество выведенных байт (символов) или EOF.
Функции fscanf() и fprintf()  выполняют форматированный ввод/вывод. Чтение из файла выполняет функция fscanf():	fscanf(f_in,[строка формата],[список адресов переменных]);Функция

Слайд 14Пример 3. В программе создается массив, состоящий из четырех целых

чисел и выводится в файл:
#include
#define n 4
int main(){
int i=0;
int

array[n]={4,44,446,4466};
FILE *out;
out=fopen("num_arr.txt","w");
for(;ifprintf(out,"%6.2d",array[i]);

fclose(out);
return 0;
}

Пример 3. В программе создается массив, состоящий из четырех целых чисел и выводится в файл:#include #define n

Слайд 15Пример 4. Имеется файл данных, содержащий целые числа, разделенные пробелами.

Количество чисел в файле неизвестно. Требуется найти среднее арифметическое значение

этих чисел:

#include
int main(){
int S=0, count=0, numb;
FILE *in;
if ((in=fopen("num_arr.txt","r"))!=NULL)
{
while (!feof(in))
{
fscanf(in,"%d",&numb);
S+=numb;
count++;
printf("%d\n", numb);
}
double aver=(double)S/count;
printf("Average=%lf\n", aver);
fclose(in);
}

else

printf("\nФайл не найден!");

return 0;

}

Пример 4. Имеется файл данных, содержащий целые числа, разделенные пробелами. Количество чисел в файле неизвестно. Требуется найти

Слайд 16Еще пример: Запись в каждую строку текстового файла полей одной

структуры
file = fopen("fprintf.txt", "w");
 
while (scanf ("%s%u%f", shop[i].name, &(shop[i].qty), &(shop[i].price)) !=

EOF) {
fprintf(file, "%s %u %.2f\n", shop[i].name, shop[i].qty, shop[i].price);
i++;
}

Еще пример: Запись в каждую строку текстового файла полей одной структурыfile = fopen(

Слайд 18Функции fgets() и fputs() выполняют форматированный ввод/вывод.
Функция fgets() аналогична функции

gets() и осуществляет построчный ввод из файла. Один вызов fgets()

позволят прочитать одну строку. При этом можно прочитать не всю строку, а лишь ее часть от начала. Параметры fgets() выглядят таким образом:

fgets (массив_символов, количество_считываемых_символов, указатель_на_файл)
 
Например: fgets (str, 50, myfile);

Такой вызов функции прочитает из файла, связанного с указателем myfile, одну строку текста полностью, если ее длина меньше 50 символов с учетом символа '\n', который функция также сохранит в массиве. Последним (50-ым) элементом массива str будет символ '\0', добавленный fgets(). Если строка окажется длиннее, то функция прочитает 49 символов и в конце запишет '\0'. В таком случае '\n' в считанной строке содержаться не будет.


Функции fgets() и fputs() выполняют форматированный ввод/вывод. 	Функция fgets() аналогична функции gets() и осуществляет построчный ввод из

Слайд 19В этой программе данные считываются строка за строкой в массив

arr. Когда считывается следующая строка, предыдущая теряется. Функция fgets() возвращает

NULL в случае, если не может прочитать следующую строку.

#include
 
#define N 80
 
main () {
FILE *file;
chararr[N];
 
file = fopen("fscanf.txt", "r");
 
while (fgets (arr, N, file) != NULL)
printf("%s", arr);
 
printf("\n");
fclose(file);
}

В этой программе данные считываются строка за строкой в массив arr. Когда считывается следующая строка, предыдущая теряется.

Слайд 20 Функции fread() и fwrite() принимают в качестве параметров:
адрес области памяти,

куда данные записываются или откуда считываются,
размер одного данного какого-либо типа,
количество

считываемых данных указанного размера,
файловый указатель.

Функции fread() и fwrite() принимают в качестве параметров: адрес области памяти, куда данные записываются или откуда

Слайд 21 Пример использования функций fread() и fwrite():
#include
#include
 
main () {
FILE

*file;
char shelf1[50], shelf2[100];
int n, m;
 
file = fopen("shelf1.txt", "rb");
n=fread(shelf1, sizeof(char), 50,

file);
fclose(file);
 
file = fopen("shelf2.txt", "rb");
m=fread(shelf2, sizeof(char), 50, file);
fclose(file);
 
shelf1[n] = '\0';
shelf2[m] = '\n';
shelf2[m+1] = '\0';
 
file = fopen("shop.txt", "wb");
fwrite(strcat(shelf2,shelf1), sizeof(char), n+m, file);
fclose(file);
}

Здесь осуществляется попытка чтения из первого файла 50-ти символов. В n сохраняется количество реально считанных символов. Значение n может быть равно 50 или меньше. Данные помещаются в строку. То же самое происходит со вторым файлом. Далее первая строка присоединяется ко второй, и данные сбрасываются в третий файл.

Пример использования функций fread() и fwrite(): #include #include  main () {	FILE *file;	char shelf1[50], shelf2[100];	int n, m; 	file

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика