Файлы записей. Структуры данных. Лекция 4 презентация

Содержание

Слайд 2

Передача параметров функции main() int main ( ) int main

Передача параметров функции main()

int main ( )
int main (int argc, char

*argv[])
./my_proga text1 text2
argc ? 3
argv[0] ? my_proga
argv[1] ? text1
argv[2] ? text2
Слайд 3

Пример 1. #include int main ( int argc, char *argv[])

Пример 1.

#include
int main ( int argc, char *argv[])
{
  int i=0;
  printf

("Число параметров равно%d\n", argc);
  printf ("Имя программы %s\n", argv[0]);
  for (i=1; i < argc; i++)
   printf (“аргумент %d равен %s\n", i, argv[i]);
  return 0;
}
./my_proga myfile1.txt myfile2.txt myfile3.txt
Слайд 4

Параметры функции main() в качестве имен файлов f1=fopen(argv[1], “rb"); f2=fopen(argv[2], “wb");

Параметры функции main() в качестве имен файлов
f1=fopen(argv[1], “rb");
f2=fopen(argv[2], “wb");

Слайд 5

Другие полезные функции Функция fseek( ) устанавливает файловый указатель в

Другие полезные функции

Функция fseek( ) устанавливает файловый указатель в произвольную позицию внутри файла.


Прототип:    int fseek(FILE *fp, long count, int access); fp - указатель на файл
Слайд 6

Функция fseek( ) count - номер байта относительно начальной позиции,

Функция fseek( )

count - номер байта относительно начальной позиции, начиная с которого будет

выполняться операция:
count = sizeof( type_of_object )*N; 
Слайд 7

Начальная позиция int access - способ задания начальной позиции: 0

Начальная позиция

int access
 - способ задания начальной позиции:
0 - начальная

позиция задана в начале файла;
1 - начальная позиция считается текущей;
2 - начальная позиция задана в конце файла.
Слайд 8

Прямой доступ. struct data { int day; char month[10]; int

Прямой доступ.

struct data {
int day;
char month[10];


int year;
};
struct data mydata, *dat;
dat = &mydata;
Слайд 9

Cпособ задания начальной позиции fseek(fp, sizeof(mydata)*3, 0); fwrite(&MyData,sizeof(MyData), 1, fp);

Cпособ задания начальной позиции

fseek(fp, sizeof(mydata)*3, 0); 
fwrite(&MyData,sizeof(MyData), 1, fp); 

Слайд 10

Cпособ задания начальной позиции fread(&MyData, sizeof(mydata), 1, fp); fseek(fp, sizeof(mydata)*2, 1); fwrite(&mydata,sizeof(mydata), 1, fp);

Cпособ задания начальной позиции

fread(&MyData, sizeof(mydata), 1, fp);
fseek(fp, sizeof(mydata)*2, 1); 
fwrite(&mydata,sizeof(mydata), 1,

fp); 
Слайд 11

Cпособ задания начальной позиции fseek(fp, sizeof(mydata)*(-7), 2); fwrite(&mydata,sizeof(mydata), 1, fp);

Cпособ задания начальной позиции

fseek(fp, sizeof(mydata)*(-7), 2); 
fwrite(&mydata,sizeof(mydata), 1, fp); 

Слайд 12

Последовательный и прямой доступ к записям файла float a; FILE

Последовательный и прямой доступ к записям файла

float a;
FILE *f;
f=fopen("numb","rb");
fscanf(f, "%f", &a);
fscanf(f,

"%f", &a);
fscanf(f, "%f", &a);
printf("%f", a);
1.1 2.2 3.3 4.4 5.5 6.6
Слайд 13

Пример 2. Прямой доступ. Обновление четвертой записи FILE *fp; fp=fopen("mystructs",

Пример 2. Прямой доступ. Обновление четвертой записи

FILE *fp;
fp=fopen("mystructs", "rb+");
fseek(fp, sizeof(mydata)*3,

0);
fread(&dat, sizeof(mydata), 1, fp);
scanf("%s", &mydata.month);
fseek(fp, sizeof(mydata)*3, 0);
fwrite(&mydata,sizeof(mydata), 1, fp);
Слайд 14

Указатель текущей позиции в начало файла Функция rewind() : void

Указатель текущей позиции в начало файла

Функция rewind() :    void rewind (FILE *fp); Следует использовать, если

чтение файла должно быть выполнено несколько раз
Слайд 15

Пример 3. Передача файлового указателя функции void prosmotr(FILE *fp) {

Пример 3. Передача файлового указателя функции

void prosmotr(FILE *fp)
{ rewind(fp);
// использование

fread(…) }
int main()
{
FILE *fp;
fp=fopen("mystructs","rb+");
prosmotr(fp);
dobavlenie(fp); …
Слайд 16

Структуры данных. Линейный список Линейный список - это множество, состоящее

Структуры данных. Линейный список

Линейный список - это множество, состоящее из переменного

числа узлов 
X[1], X[2], ... , X[n], n≥0
Если n>0 X[1] – первый элемент
Если 1X[n] - последний элемент
Слайд 17

Некоторые специальные списки Стек

Некоторые специальные списки

Стек

Слайд 18

Некоторые специальные списки Очередь

Некоторые специальные списки

Очередь

Слайд 19

Некоторые специальные списки Дек

Некоторые специальные списки

Дек

Слайд 20

Пример 4. Реализация стека в виде массива include int Stack[100], TOP=0 ; void vcluch(int); viod iskluch(*int);

Пример 4. Реализация стека в виде массива

include
int Stack[100], TOP=0

;
void vcluch(int);
viod iskluch(*int);
Слайд 21

Реализация стека в виде массива. Функция включения элемента в стек

Реализация стека в виде массива. Функция включения элемента в стек

void vcluch

(int y)
{
if( TOP>=100 )
{ printf(“Переполнение стека”);
return; }
Stack[TOP] = y;
TOP++;
}
Слайд 22

Реализация стека в виде массива. Функция исключения элемента из стека

Реализация стека в виде массива. Функция исключения элемента из стека

void iscluch

( *int y)
{
if( TOP==0 )
{ printf(“Нехватка элементов”);
return; }
*y = Stack[TOP];
TOP--;
}
Слайд 23

Реализация стека в виде массива int main() { int y,

Реализация стека в виде массива

int main()
{
int y,

i;
for (i=0; i<10; i++)
{
scanf(“%d”, &y);
vcluch (y);
}
iscluch(&y);
printf(“%d”, y);
}
Слайд 24

Линейный список в виде одномерного массива

Линейный список в виде одномерного массива

Имя файла: Файлы-записей.-Структуры-данных.-Лекция-4.pptx
Количество просмотров: 87
Количество скачиваний: 0