🗊Презентация Лекция 5. Файлы в Си

Нажмите для полного просмотра!
Лекция 5. Файлы в Си, слайд №1Лекция 5. Файлы в Си, слайд №2Лекция 5. Файлы в Си, слайд №3Лекция 5. Файлы в Си, слайд №4Лекция 5. Файлы в Си, слайд №5Лекция 5. Файлы в Си, слайд №6Лекция 5. Файлы в Си, слайд №7Лекция 5. Файлы в Си, слайд №8Лекция 5. Файлы в Си, слайд №9Лекция 5. Файлы в Си, слайд №10Лекция 5. Файлы в Си, слайд №11Лекция 5. Файлы в Си, слайд №12Лекция 5. Файлы в Си, слайд №13Лекция 5. Файлы в Си, слайд №14Лекция 5. Файлы в Си, слайд №15Лекция 5. Файлы в Си, слайд №16Лекция 5. Файлы в Си, слайд №17

Вы можете ознакомиться и скачать презентацию на тему Лекция 5. Файлы в Си. Доклад-сообщение содержит 17 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





Лекция 5 
Файлы  в  Си
Описание слайда:
Лекция 5 Файлы в Си

Слайд 2





Понятие файла в языке Си
Файл - это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. 
Файлы предназначены только для хранения информации, а обработка этой информации осуществляется  программами. 
Использование файлов целесообразно в случае:
  долговременного хранения данных;
  доступа различных программ к одним и тем же данным;
  обработки больших массивов данных, которые   невозможно целиком разместить в оперативной памяти компьютера.
Файл, не содержащий ни одного элемента, называется пустым. 
Создается файл путем добавления новых записей в конец первоначально пустого файла. 
Длина файла, т.е. количество элементов, не задается при определении файла. 
В языке Си отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку ввода-вывода языка Си (stdio.h  -  standart input output).
Описание слайда:
Понятие файла в языке Си Файл - это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. Файлы предназначены только для хранения информации, а обработка этой информации осуществляется  программами. Использование файлов целесообразно в случае:   долговременного хранения данных;   доступа различных программ к одним и тем же данным;   обработки больших массивов данных, которые невозможно целиком разместить в оперативной памяти компьютера. Файл, не содержащий ни одного элемента, называется пустым. Создается файл путем добавления новых записей в конец первоначально пустого файла. Длина файла, т.е. количество элементов, не задается при определении файла.  В языке Си отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку ввода-вывода языка Си (stdio.h - standart input output).

Слайд 3





Буферизация ввода-вывода
Считываемая и записываемая информация представляет собой последовательность байтов  - "поток" (stream). 
Поток – это логическое устройство, являющееся источником или получателем данных. 
В зависимости от того, откуда поступает считываемая информация или куда направляется записываемая информация, поток связывается с соответствующим устройством ввода вывода (клавиатура, дисплей, принтер и т.п.) или с именованной областью внешней памяти – файлом, если требуется долговременно хранить информацию либо получить доступ к хранимой информации.  
При организации ввода-вывода в С используется буферизация, то есть обмен информацией между программой и внешним устройством происходит не непосредственно, а через буфер – специально выделяемую системой область оперативной памяти. 
Буферизация  ускоряет работу программы из-за уменьшения количества обращений к внешним устройствам. 
В  библиотеке  описана константа BUFSIZE, величина которой 512: 
#define  BUFSIZE        512               
Для изменения размера буфера предназначены функции   setbuf() или  setvbuf().
Описание слайда:
Буферизация ввода-вывода Считываемая и записываемая информация представляет собой последовательность байтов - "поток" (stream). Поток – это логическое устройство, являющееся источником или получателем данных. В зависимости от того, откуда поступает считываемая информация или куда направляется записываемая информация, поток связывается с соответствующим устройством ввода вывода (клавиатура, дисплей, принтер и т.п.) или с именованной областью внешней памяти – файлом, если требуется долговременно хранить информацию либо получить доступ к хранимой информации.   При организации ввода-вывода в С используется буферизация, то есть обмен информацией между программой и внешним устройством происходит не непосредственно, а через буфер – специально выделяемую системой область оперативной памяти. Буферизация  ускоряет работу программы из-за уменьшения количества обращений к внешним устройствам. В  библиотеке описана константа BUFSIZE, величина которой 512: #define  BUFSIZE        512                Для изменения размера буфера предназначены функции   setbuf() или  setvbuf().

Слайд 4





Текстовый и бинарный режим работы с файлами
Библиотека stdio.h поддерживает текстовые и бинарные (двоичные) потоки.
Текстовый поток – это последовательность строк, каждая из которых заканчивается символом ‘\n’. Операционная среда может потребовать коррекции текстового потока. Например, при вводе текстового потока система преобразует символы возврат каретки 0x13 и перевод строки 0x10 в одиночный символ ‘\n’. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение. При выводе текстового потока в среду операционной системы происходит обратное преобразование. 
Бинарный поток – это последовательность не преобразуемых байтов, представляющих собой некоторые промежуточные данные, которые обладают тем свойством, что если их записать, а затем прочесть той же системой ввода-вывода, то будет получена информация, совпадающая с исходной.
Описание слайда:
Текстовый и бинарный режим работы с файлами Библиотека stdio.h поддерживает текстовые и бинарные (двоичные) потоки. Текстовый поток – это последовательность строк, каждая из которых заканчивается символом ‘\n’. Операционная среда может потребовать коррекции текстового потока. Например, при вводе текстового потока система преобразует символы возврат каретки 0x13 и перевод строки 0x10 в одиночный символ ‘\n’. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение. При выводе текстового потока в среду операционной системы происходит обратное преобразование. Бинарный поток – это последовательность не преобразуемых байтов, представляющих собой некоторые промежуточные данные, которые обладают тем свойством, что если их записать, а затем прочесть той же системой ввода-вывода, то будет получена информация, совпадающая с исходной.

Слайд 5





Функция  fopen
Прежде чем читать или записывать информацию в файл, он должен быть открыт функцией fopen и тем самым связан с потоком ввода-вывода. Функция открытия потока возвращает указатель fp на предопределенную в библиотеке stdio.h структуру типа FILE (содержащую всю необходимую для работы с потоком информацию) при успешном открытии потока, или NULL в противном случае. 
В stdio.h заданы 3 предопределенных потока : 
   stdin (стандартный поток ввода), stdout (стандартный поток вывода), stderr (стандартный поток ошибок) 
Вывод данных через stdout и stderr по умолчанию осуществляется на консоль. Ввод данных через stdin по умолчнию осуществляется через клавиатуру. 
Предопределенные потоки всегда открыты. 
При открытии  файла  указатель  на файл связывается с конкретным файлом на диске  (Если файл не может быть открыт по какой-либо причине, функция возвращает NULL. ) : 
FILE *fp;
fp = fopen(“спецификация файла”, "способ использования файла");

“Спецификация файла” (т.е. имя файла и путь к нему) может, например, иметь вид: 
"c:\\my_prog.txt"      -  для файла my_prog.txt на диске с: .
“Способ использования файла” - определяет режим открытия файла.
Описание слайда:
Функция fopen Прежде чем читать или записывать информацию в файл, он должен быть открыт функцией fopen и тем самым связан с потоком ввода-вывода. Функция открытия потока возвращает указатель fp на предопределенную в библиотеке stdio.h структуру типа FILE (содержащую всю необходимую для работы с потоком информацию) при успешном открытии потока, или NULL в противном случае. В stdio.h заданы 3 предопределенных потока :     stdin (стандартный поток ввода), stdout (стандартный поток вывода), stderr (стандартный поток ошибок)  Вывод данных через stdout и stderr по умолчанию осуществляется на консоль. Ввод данных через stdin по умолчнию осуществляется через клавиатуру.  Предопределенные потоки всегда открыты.  При открытии  файла  указатель  на файл связывается с конкретным файлом на диске (Если файл не может быть открыт по какой-либо причине, функция возвращает NULL. ) : FILE *fp; fp = fopen(“спецификация файла”, "способ использования файла"); “Спецификация файла” (т.е. имя файла и путь к нему) может, например, иметь вид: "c:\\my_prog.txt" - для файла my_prog.txt на диске с: . “Способ использования файла” - определяет режим открытия файла.

Слайд 6





Режимы открытия файла.
       r - открыть существующий файл для чтения;
w - создать новый файл для записи (если файл с указанным именем существует, то он будет переписан);
а - дополнить файл (открыть существующий файл для записи информации, начиная с конца файла, или создать файл, если он не существует);

r+ - открыть существующий файл для чтения и записи;
w+ - создать новый файл для чтения и записи;
a+ - дополнить или создать файл с возможностью чтения и записи;

rb - открыть двоичный файл для чтения;
wb - создать двоичный файл для записи;
аb - дополнить двоичный файл;

r+b - открыть двоичный файл для чтения и записи;
w+b - создать двоичный файл для чтения и записи;
а+b - дополнить двоичный файл с предоставлением возможности чтения и записи;

rt - открыть текстовой файл для чтения;
wt - создать текстовый файл для записи;
at - дополнить текстовый файл;

r+t - открыть текстовой файл для чтения и записи;
w+t - создать текстовый файл для чтения и записи;
a+t - дополнить текстовый файл с предоставлением возможности записи и чтения.
Строки вида r+b можно записывать и в другой форме: rb+.
Описание слайда:
Режимы открытия файла. r - открыть существующий файл для чтения; w - создать новый файл для записи (если файл с указанным именем существует, то он будет переписан); а - дополнить файл (открыть существующий файл для записи информации, начиная с конца файла, или создать файл, если он не существует); r+ - открыть существующий файл для чтения и записи; w+ - создать новый файл для чтения и записи; a+ - дополнить или создать файл с возможностью чтения и записи; rb - открыть двоичный файл для чтения; wb - создать двоичный файл для записи; аb - дополнить двоичный файл; r+b - открыть двоичный файл для чтения и записи; w+b - создать двоичный файл для чтения и записи; а+b - дополнить двоичный файл с предоставлением возможности чтения и записи; rt - открыть текстовой файл для чтения; wt - создать текстовый файл для записи; at - дополнить текстовый файл; r+t - открыть текстовой файл для чтения и записи; w+t - создать текстовый файл для чтения и записи; a+t - дополнить текстовый файл с предоставлением возможности записи и чтения. Строки вида r+b можно записывать и в другой форме: rb+.

Слайд 7





Примеры открытия файлов
FILE   *f_in,  *f_out;
f_in = fopen ("My_file1","r");
f_out = fopen ("My_file2","w");
Описание слайда:
Примеры открытия файлов FILE  *f_in, *f_out; f_in = fopen ("My_file1","r"); f_out = fopen ("My_file2","w");

Слайд 8





Функция  fclose
После окончания работы с файлом он должен быть закрыт. Закрытие файла (текстового или бинарного) выполняется  функцией fclose(): 
fclose(FILE *fp);
 При этом разрывается связь указателя на файл c внешним набором данных. Освободившийся указатель можно использовать для другого файла. 
При успешном завершении операции функция fclose( ) возвращает значение нуль. Любое другое значение свидетельствует об ошибке. 
Пример:
fclose(f_in);
Описание слайда:
Функция fclose После окончания работы с файлом он должен быть закрыт. Закрытие файла (текстового или бинарного) выполняется  функцией fclose():  fclose(FILE *fp);  При этом разрывается связь указателя на файл c внешним набором данных. Освободившийся указатель можно использовать для другого файла.  При успешном завершении операции функция fclose( ) возвращает значение нуль. Любое другое значение свидетельствует об ошибке. Пример: fclose(f_in);

Слайд 9





Проверка признака конца файла
При каждой операции ввода/вывода происходит перемещение указателя текущей позиции в файле, в какой-то момент указатель достигает конца файла. Структура типа FILE имеет поле – индикатор конца файла. Функция feof() проверяет состояние индикатора конца файла и возвращает значение 0, если конец файла не был достигнут, или значение, отличное от нуля, если был достигнут конец файла. Функция имеет единственный аргумент – указатель на поток типа FILE. 
Вызов функции:
if (! feof(f_in))…
проверяет, что конец файла еще не достигнут.
Описание слайда:
Проверка признака конца файла При каждой операции ввода/вывода происходит перемещение указателя текущей позиции в файле, в какой-то момент указатель достигает конца файла. Структура типа FILE имеет поле – индикатор конца файла. Функция feof() проверяет состояние индикатора конца файла и возвращает значение 0, если конец файла не был достигнут, или значение, отличное от нуля, если был достигнут конец файла. Функция имеет единственный аргумент – указатель на поток типа FILE. Вызов функции: if (! feof(f_in))… проверяет, что конец файла еще не достигнут.

Слайд 10





Функции ввода/вывода. Функции fgetc() и fputc().
Простейший способ выполнить чтение из файла или запись в файл – использовать функции getc() или putc().
Функция getc() выбирает из файла очередной символ; ей нужно только знать указатель на файл:
 char Symb = getc(f_in);
Если при обработке достигается конец файла, то функция getc() возвращает значение EOF(end of file).
Функция putc() заносит значение символа Symb в файл, на который указывает f_out. Формат вызова функции: 
putc(Symb,f_out);
Описание слайда:
Функции ввода/вывода. Функции fgetc() и fputc(). Простейший способ выполнить чтение из файла или запись в файл – использовать функции getc() или putc(). Функция getc() выбирает из файла очередной символ; ей нужно только знать указатель на файл:  char Symb = getc(f_in); Если при обработке достигается конец файла, то функция getc() возвращает значение EOF(end of file). Функция putc() заносит значение символа Symb в файл, на который указывает f_out. Формат вызова функции:  putc(Symb,f_out);

Слайд 11





Функции fgetc() и fputc().
Пример 1. Текст из файла my_char.txt выводится на экран. Если файл не найден, на экран выводится сообщение "File not found!":
#include <stdio.h>
int main(void) 
 {
FILE  *ptr;
unsigned char ch;
if ((ptr=fopen("my_char.txt","r"))!=NULL)
{
ch=fgetc(ptr);
while (!feof(ptr))
{
printf("%c",ch);
ch=fgetc(ptr);
}
fclose(ptr);
}
еlse    printf("\nFile not found!");
return 0;
}
В этом примере для чтения из файла используется переменная ptr. При открытии файла производится проверка. Если переменной ptr присвоено значение NULL, то файл не найден; на экран выводится соответствующее сообщение, и программа завершается. Если ptr получила ненулевое значение, то файл открыт. Далее выполняется чтение символов из файла до тех пор, пока не будет достигнут конец файла (!feof(ptr)). Прочитанные символы помещаются в переменную ch, а затем выводятся на экран.
Описание слайда:
Функции fgetc() и fputc(). Пример 1. Текст из файла my_char.txt выводится на экран. Если файл не найден, на экран выводится сообщение "File not found!": #include <stdio.h> int main(void) { FILE *ptr; unsigned char ch; if ((ptr=fopen("my_char.txt","r"))!=NULL) { ch=fgetc(ptr); while (!feof(ptr)) { printf("%c",ch); ch=fgetc(ptr); } fclose(ptr); } еlse printf("\nFile not found!"); return 0; } В этом примере для чтения из файла используется переменная ptr. При открытии файла производится проверка. Если переменной ptr присвоено значение NULL, то файл не найден; на экран выводится соответствующее сообщение, и программа завершается. Если ptr получила ненулевое значение, то файл открыт. Далее выполняется чтение символов из файла до тех пор, пока не будет достигнут конец файла (!feof(ptr)). Прочитанные символы помещаются в переменную ch, а затем выводятся на экран.

Слайд 12





Функции getc() и putc().
Пример 2. Записать в файл буквы, вводимые с клавиатуры.
Ввод продолжается до нажатия клавиши F6 или CTRL/z
(ввод символа EOF – конца файла):
#include <stdio.h>
int main(void)
{
char c;
FILE *out;
out=fopen("Liter","w");
while ((c=getch( ) )!=EOF)
fputc(c,out);
fclose(out);
return 0;
}
Описание слайда:
Функции getc() и putc(). Пример 2. Записать в файл буквы, вводимые с клавиатуры. Ввод продолжается до нажатия клавиши F6 или CTRL/z (ввод символа EOF – конца файла): #include <stdio.h> int main(void) { char c; FILE *out; out=fopen("Liter","w"); while ((c=getch( ) )!=EOF) fputc(c,out); fclose(out); return 0; }

Слайд 13





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

Следует заметить, что вызов функции
fscanf(stdin,[строка формата],[список адресов переменных]);
эквивалентен вызову
scanf([строка формата],[список адресов переменных]);
Аналогично,
fprintf(stdout, [строка формата],[список переменных, констант]);
эквивалентно
printf([строка формата],[список переменных, констант]);
Описание слайда:
Функции fscanf() и fprintf() Функции fscanf() и fprintf() выполняют форматированный ввод/вывод.  Чтение из файла выполняет функция fscanf(): fscanf(f_in,[строка формата],[список адресов переменных]); Функция возвращает количество введенных значений или EOF. Запись в файл осуществляет функция fprintf(): fprintf(f_out,[строка формата],[список переменных, констант]); Функция возвращает количество выведенных байт (символов) или EOF. Строка формата функций fscanf() и fprintf() формируется так же, как при консольном вводе/выводе функциями printf() и scanf(). Следует заметить, что вызов функции fscanf(stdin,[строка формата],[список адресов переменных]); эквивалентен вызову scanf([строка формата],[список адресов переменных]); Аналогично, fprintf(stdout, [строка формата],[список переменных, констант]); эквивалентно printf([строка формата],[список переменных, констант]);

Слайд 14





 Примеры программ, использующих 
 функции fscanf() и fprintf().
Пример 1. В программе создается массив, состоящий из четырех целых чисел. Вывести массив в файл:
#include <stdio.h>
#define n 4
int main()  {
int i=0;
int array[n]={4,44,446,4466};
FILE *out;
out=fopen("num_arr.txt","w");
for(;i<n;i++)
fprintf(out,"%6d",array[i]);
fclose(out);
return 0;     }
В результате выполнения программы в файл num_arr.txt будет помещена
 следующая информация:
Описание слайда:
 Примеры программ, использующих функции fscanf() и fprintf(). Пример 1. В программе создается массив, состоящий из четырех целых чисел. Вывести массив в файл: #include <stdio.h> #define n 4 int main() { int i=0; int array[n]={4,44,446,4466}; FILE *out; out=fopen("num_arr.txt","w"); for(;i<n;i++) fprintf(out,"%6d",array[i]); fclose(out); return 0; } В результате выполнения программы в файл num_arr.txt будет помещена следующая информация:

Слайд 15





 Примеры программ, использующих
 функции fscanf() и fprintf(). 
#include <stdio.h>
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=%f\n", aver);
fclose(in);
}
else
printf("\nФайл не найден!");
return 0;    }
Описание слайда:
 Примеры программ, использующих функции fscanf() и fprintf(). #include <stdio.h> 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=%f\n", aver); fclose(in); } else printf("\nФайл не найден!"); return 0; }

Слайд 16





Примеры программ, использующих
 функции fscanf() и fprintf().
#include <conio.h>
#include <stdio.h>
int main()   {
     int bal;
     char name[15];
     FILE *file;
 if ((file = fopen("1.txt","w")) == NULL)
        printf("Файл невозможно открыть или создать\n");
     else{
        for(;;){
           scanf ("%d%s", &bal, name);
           if (bal == 0)
              break;
           fprintf(file,"%d %s\n", bal, name);
        }
     }
     fclose(file); 
return 0;      }
Описание слайда:
Примеры программ, использующих функции fscanf() и fprintf(). #include <conio.h> #include <stdio.h> int main() {      int bal;      char name[15];      FILE *file; if ((file = fopen("1.txt","w")) == NULL)         printf("Файл невозможно открыть или создать\n");      else{         for(;;){            scanf ("%d%s", &bal, name);            if (bal == 0)               break;            fprintf(file,"%d %s\n", bal, name);         }      }      fclose(file);  return 0; }

Слайд 17





Задание
Создайте 10 записей, содержащих 
информацию о железнодорожных 
маршрутах. В нём должны быть следующие 
данные: 
 номер пути
 номер вагона
 имя поезда
Запишите сами вручную эти данные в файл.
 Затем вам необходимо считать эти данные и
 вывести их на экран.
Описание слайда:
Задание Создайте 10 записей, содержащих информацию о железнодорожных маршрутах. В нём должны быть следующие данные: номер пути номер вагона имя поезда Запишите сами вручную эти данные в файл. Затем вам необходимо считать эти данные и вывести их на экран.



Похожие презентации
Mypresentation.ru
Загрузить презентацию