Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
16 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
196.00 kB
Просмотров:
72
Скачиваний:
2
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Глава . Работа с файловой](/documents_5/97e129b392bc19e758574884c4f61561/img0.jpg)
Содержание слайда: Глава 4.
Работа с файловой системой
МГТУ им. Н.Э. Баумана
Факультет Информатика и системы управления
Кафедра Компьютерные системы и сети
Лектор: д.т.н., проф.
Иванова Галина Сергеевна
№2 слайд![. Механизм выполнения](/documents_5/97e129b392bc19e758574884c4f61561/img1.jpg)
Содержание слайда: 4.1 Механизм выполнения ввода-вывода
typedef struct {
short level; // количество непрочитанных байт в буфере
unsigned flags; // режимы: чтение/ запись/ввод/вывод и т.д.
char fd; // дискриптор файла
unsigned hold;
short bsize; // размер буфера
unsigned char *buffer; // адрес буфера
unsigned char *curp; // текущий указатель (в буфере)
unsigned istemp;
short token; } FILE;
№3 слайд![. Объявление, открытие и](/documents_5/97e129b392bc19e758574884c4f61561/img2.jpg)
Содержание слайда: 4.2 Объявление, открытие и закрытие файлов
Объявление
FILE *<Файловая переменная (Ф.п.)>;
Открытие
<Ф. п.>=fopen(<Имя файла>,<Операция [+] [Тип]>);
<Oперация[+]>:
r - ввод из существующего файла;
w - вывод с очисткой файла или создание нового файла для вывода;
a - добавление к существующему или создание файла для вывода;
r+ - ввод/вывод в существующий файл;
w+ - ввод/вывод в существующий или создание нового файла;
a+ - ввод/добавление к существующему или создание файла для
ввода/вывода.
<Тип> - t - текстовый файл (принимается по умолчанию);
b - двоичный файл.
Закрытие
fclose(<Ф. п.>);
№4 слайд![Примеры открытия закрытия](/documents_5/97e129b392bc19e758574884c4f61561/img3.jpg)
Содержание слайда: Примеры открытия/закрытия файлов
а) объявление и открытие существующего или нового двоичного файла для ввода/вывода
FILE *f;
f=fopen("abc.txt","w+b");
…
fclose(f);
б) объявление и открытие существующего файла с проверкой существования
FILE *f;
if ((f=fopen("f:\\iva\\text.txt", "r"))!=NULL) …
…
fclose(f);
№5 слайд![. Файловый указатель. Функции](/documents_5/97e129b392bc19e758574884c4f61561/img4.jpg)
Содержание слайда: 4.3 Файловый указатель.
Функции управления файловым указателем
а) определение положения файлового указателя:
long ftell(FILE *stream);
б) установка файлового указателя на начало файла:
int rewind(FILE *stream);
в) установка файлового указателя в произвольное место:
int fseek(FILE *stream,long offset,int whenсe);
№6 слайд![. Текстовые файлы - . Ввод](/documents_5/97e129b392bc19e758574884c4f61561/img5.jpg)
Содержание слайда: 4.4 Текстовые файлы
1-2. Ввод/вывод символов
int getc(FILE *stream); // возвращает символ или EOF
int putc(int c,FILE *stream);
Пример. Вывод на экран содержимого файла (Ex4_01).
#include "stdafx.h"
#include <stdio.h>
void main(int argc,char *argv[ ])
{ FILE *in; int ch;
if (argc<2)puts("Введите имя файла.");
else
if ((in=fopen(argv[1],"r"))!=NULL)
{ while ((ch=getc(in))!=EOF) putchar(ch);
fclose(in);
}
else puts("Нельзя открыть файл.");
}
№7 слайд![Стандартные текстовые файлы](/documents_5/97e129b392bc19e758574884c4f61561/img6.jpg)
Содержание слайда: Стандартные текстовые файлы
stdin, stdout, stderr
getchar( ) = = getc(stdin)
putchar(ch) = = putc(ch,stdout)
Пример. Чтение с начала и с конца (Ex4_02).
#include "stdafx.h”
#include <stdio.h>
void main()
{ FILE *f; long offset=0L; int ch;
f=fopen("test.dat","r");
while ((!fseek(f,offset++,0)) && ((ch=getc(f))!=EOF))
{ putc(ch,stdout);
if (!fseek(f,-(offset+2),2)) putc(getc(f),stdout);
}
fclose(f);
}
№8 слайд![Буферированные и прямые](/documents_5/97e129b392bc19e758574884c4f61561/img7.jpg)
Содержание слайда: Буферированные и «прямые» операции
stdio.h: getchar(), putchar() – буферированные;
conio.h: getch(), getche(), putch() – «прямые»
Примеры (Ex4_03):
а) while((n=getchar())!='E'){putchar('\n'); putchar(n);}
б) while ((n=getche())!='E') {putch('\n'); putch(n); }
№9 слайд![. Вывод строк int fputs const](/documents_5/97e129b392bc19e758574884c4f61561/img8.jpg)
Содержание слайда: 3. Вывод строк
int fputs(const char *s,FILE *stream);
Пример. Создание файла из 6 строк (Ex4_04).
#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{ FILE *f; int n; char *s="ABCD";
f=fopen("test.dat","w");
for (n=0;n<6;n++)
{ fputs(s,f);
fputs("\n",f);
}
fclose(f);
return 0;
}
№10 слайд![. Ввод строк char fgets char](/documents_5/97e129b392bc19e758574884c4f61561/img9.jpg)
Содержание слайда: 4. Ввод строк
char *fgets(char *s, int n, FILE *stream); // возвращает строку или NULL
Пример. Чтение файла по строкам (Ex4_05).
#include "stdafx.h"
#include <stdio.h>
void main()
{ FILE *f1;
char string[80];
f1=fopen("test.dat","r");
while (fgets(string,80,f1)!=NULL)
puts(string);
}
№11 слайд![- . Форматный ввод вывод int](/documents_5/97e129b392bc19e758574884c4f61561/img10.jpg)
Содержание слайда: 5-6. Форматный ввод/вывод
int fscanf(FILE *stream,const char *format[,adress,...]);
int fprintf(FILE *stream,const char *format[,argument,.]);
Пример. Создание и распечатка файла чисел (Ex4_06).
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{ int i,r; FILE *f;
srand((unsigned)time(NULL));
f=fopen("rand1.dat","w+");
for (i=0;i<7;i++){r=rand(); fprintf(f,"%d ",r);}
rewind(f);
while (fscanf(f,"%d",&r)!=EOF)printf("%6d",r);
fclose(f);
return 0;}
№12 слайд![. Двоичные файлы Ввод вывод](/documents_5/97e129b392bc19e758574884c4f61561/img11.jpg)
Содержание слайда: 4.5 Двоичные файлы
Ввод/вывод
size_t fread(void *ptr,size_t size,size_t n,
FILE *stream);
size_t fwrite(void *ptr,size_t size,size_t n,
FILE *stream);
Используются в двух вариантах:
а) при работе со структурами
fread (&myrec, sizeof(myrec),1,f1);
fwrite (&myrec, sizeof(myrec),1,f1);
где myrec - переменная типа «структура»;
б) при работе с нетипизированной информацией
fread(&buffer,1,sizeof(buffer),f2);
fwrite(&buffer,1,sizeof(buffer),f2);
где buffer – массив байт.
№13 слайд![Пример работы с двоичным](/documents_5/97e129b392bc19e758574884c4f61561/img12.jpg)
Содержание слайда: Пример работы с двоичным файлом (1)
#include "stdafx.h" (Ex4_07)
#include <stdio.h>
#include <string.h>
struct toys{ char name[20];int cost;} toy;
int main(int argc, char* argv[])
{ FILE *f;
f=fopen("test.dat","w+b");
while(scanf("\n%s",toy.name),
strcmp(toy.name,"end")!=0)
{ scanf("%d",&toy.cost);
fwrite(&toy,sizeof(toy),1,f);
}
fclose(f);
return 0;
}
№14 слайд![Пример работы с двоичным](/documents_5/97e129b392bc19e758574884c4f61561/img13.jpg)
Содержание слайда: Пример работы с двоичным файлом (2)
#include "stdafx.h" (Ex4_08)
#include <stdio.h>
struct toys{ char name[20]; int cost;} toy;
int main(int argc, char* argv[])
{ FILE *f;
f=fopen("test.dat","r+b");
while(fread(&toy,sizeof(toy),1,f)>0)
printf("Toy name %s - cost - %d\n",toy.name,toy.cost);
fclose(f);
return 0;
}
№15 слайд![Чтение текстового файла как](/documents_5/97e129b392bc19e758574884c4f61561/img14.jpg)
Содержание слайда: Чтение текстового файла как двоичного
#include "stdafx.h" (Ex4_09)
#include <stdio.h>
int main(int argc, char* argv[])
{ char c;
FILE *f;
f=fopen("ddd.dat","w");
fputs("ABCDEF",f);
fclose(f);
f=fopen("ddd.dat","rb");
while (fread(&c,1,1,f)!=0)
printf("%c ",c);
fclose(f);
return 0;
}
№16 слайд![. Переименование и удаление](/documents_5/97e129b392bc19e758574884c4f61561/img15.jpg)
Содержание слайда: 4.6 Переименование и удаление файлов
Пример. Вставка 10 чисел после первых 10 чисел файла.
#include "stdafx.h" (Ex4_10)
#include <stdio.h>
int main(int argc, char* argv[])
{ int n,m;
FILE *f,*g;
f=fopen("rand.dat","r");
g=fopen("$$$$xxx.tmp","w");
for (n=0;n<10;n++)
{ fscanf(f,"%d\n",&m); fprintf(g,"%d\n",m);}
for (n=0;n<10;n++) fprintf(g,"%d\n",n);
n=fgetc(f);
while(n!=EOF) { fputc(n,g); n=fgetc(f);}
fcloseall();
unlink("rand.dat");
rename("$$$$xxx.tmp","rand.dat");
return 0;}