Числовые файлы. Файлы записей. Лекция 3 презентация

Содержание

Слайд 2

Пример на строки, строковые функции и указатели

Имеется строковый файл, в котором встречаются точки.

Выполнить разрезание строки по позиции точки. Точка остается в первой строке. Результат записать в другой файл.

Пример на строки, строковые функции и указатели Имеется строковый файл, в котором встречаются

Слайд 3

char *a, buf1[51] , buf2[51];
FILE *f, *g;
f = fopen("mystr.txt", “rt");
fgets(buf1, 50, f);
a

= strchr(buf1, ‘.’);
a++;
strcpy(buf2, a);
*a=‘\0’;
g = fopen("mystr2.txt", “wt");
fputs(buf1, g); putc(‘\n’, g);
fputs(buf2, g);
xxxxxxxxxxx.zzzzzzzzzzzz.

char *a, buf1[51] , buf2[51]; FILE *f, *g; f = fopen("mystr.txt", “rt"); fgets(buf1,

Слайд 4

Пример 1. Пусть имеется целочисленный заполненный массив из 1000 чисел. Записать числа в

файл

int i, x[1000];
// массив x заполнен
FILE *f;
f = fopen(“numbers.num", “wb");
for(i=0; i<1000; i++)
{
fpintf( f, “%d”, x[i]);
}

Пример 1. Пусть имеется целочисленный заполненный массив из 1000 чисел. Записать числа в

Слайд 5

В файл записаны числа без разделителя

В файл записаны числа без разделителя

Слайд 6

Числа с разделителем fpintf( f, “%d ”, x[i]); fpintf( f, “%5d”, x[i]);

Числа с разделителем fpintf( f, “%d ”, x[i]); fpintf( f, “%5d”, x[i]);

Слайд 7

Пример 2. Пусть имеется целочисленный файл. Заполнить массив числами из файла

FILE *f;
f =

fopen(“numbers.num", “rb");
int i=0, n[100];
while(!feof(f))
{
fscanf(f, “%d”, &n[i]);
i++;
}

Пример 2. Пусть имеется целочисленный файл. Заполнить массив числами из файла FILE *f;

Слайд 8

Пример 3. Пусть имеется файл, содержащий целые числа. Подсчитать количество чисел в файле

int

count=0, х;
FILE *f;
f = fopen(“numbers.num", “rb");
while(!feof(f))
{
fscanf(f, “%d”, &x);
count++;
}

Пример 3. Пусть имеется файл, содержащий целые числа. Подсчитать количество чисел в файле

Слайд 9

Генератор случайных чисел

#include
Функция srand() в качестве аргумента просит первоначальное случайное число.
Функция rand()

генерирует целое положительное число
int chislo = rand();

Генератор случайных чисел #include Функция srand() в качестве аргумента просит первоначальное случайное число.

Слайд 10

Начальные действия

для использования функций генератора случайных чисел int chislo; srand(time(NULL)); chislo = rand();
//от

0 до числа RAND_MAX
printf("RAND_MAX=%d\n",RAND_MAX);

Начальные действия для использования функций генератора случайных чисел int chislo; srand(time(NULL)); chislo =

Слайд 11

Пример 4. Генерация случайных чисел

int j, i;
srand(time(NULL));
for(j=0; j<10; j++)
{
i=rand() % 100;

// остаток от деления на 100
  printf("%d\n", i);
}

Пример 4. Генерация случайных чисел int j, i; srand(time(NULL)); for(j=0; j { i=rand()

Слайд 12

Генерация случайных чисел

Регулирования диапазона чисел: начальное значение + rand()% конечное значение
int chislo =

3 + rand() % 7;
int chislo = -3 + rand() % 7;
float chislo = (float)(rand() % 100)/10;
float chislo = (float)(rand() )/ RAND_MAX;

Генерация случайных чисел Регулирования диапазона чисел: начальное значение + rand()% конечное значение int

Слайд 13

Ввод/вывод записей

Функция fread( ) - для чтения блоков данных из потока
Прототип: unsigned fread(void *ptr,

unsigned size,
unsigned n, FILE *fp);

Ввод/вывод записей Функция fread( ) - для чтения блоков данных из потока Прототип:

Слайд 14

Ввод/вывод записей

Функция fwrite( ) – для записи блоков данных в поток
Прототип: unsigned fwrite(void *ptr,

unsigned size,
unsigned n, FILE *fp);

Ввод/вывод записей Функция fwrite( ) – для записи блоков данных в поток Прототип:

Слайд 15

Функция sizeof()

char buf[120];
fgets(buf, sizeof(buf)-1, fp);
int x[100];
int n=sizeof(x);
int

m=sizeof(int*100);
int k=sizeof(400);

Функция sizeof() char buf[120]; fgets(buf, sizeof(buf)-1, fp); int x[100]; int n=sizeof(x); int m=sizeof(int*100); int k=sizeof(400);

Слайд 16

Пример 5. Запись массива в файл

float A[10];
int i;
FILE *f;
f=fopen("nums.num“, “wb");
for(i=0; i<10; i++)

scanf(“%f”, &A[i]);
fwrite(A, sizeof(A), 1, f);
close(f);

Пример 5. Запись массива в файл float A[10]; int i; FILE *f; f=fopen("nums.num“,

Слайд 17

Пример 6. Чтение массива из файла

float A[10];
int i;
FILE *f;
f=fopen("nums.num“, “rb");
fread(A, sizeof(A), 1,

f);
for(i=0; i<10; i++)
printf(“%f ”, A[i]);
close(f);

Пример 6. Чтение массива из файла float A[10]; int i; FILE *f; f=fopen("nums.num“,

Слайд 18

Ввод/вывод структур

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


};  struct data mydata, *dat;
dat = &mydata;

Ввод/вывод структур struct data { int day; char month[10]; int year; }; struct

Слайд 19

Запись структуры в файл

fwrite(&mydata, sizeof(struct data), 1, fp);
//либо
fwrite(&mydata,

sizeof(mydata), 1, fp);
// либо
fwrite(dat, sizeof(mydata), 1, fp);

Запись структуры в файл fwrite(&mydata, sizeof(struct data), 1, fp); //либо fwrite(&mydata, sizeof(mydata), 1,

Слайд 20

Пример 7

FILE *f;
f=fopen("nums.num“, “rb");
scanf(“%d”, &mydata.day);
scanf(“%s”, mydata.month);
scanf(“%d”, &mydata.year);
fwrite(&mydata, sizeof(struct data), 1, f);

Пример 7 FILE *f; f=fopen("nums.num“, “rb"); scanf(“%d”, &mydata.day); scanf(“%s”, mydata.month); scanf(“%d”, &mydata.year); fwrite(&mydata,

Слайд 21

Чтение структуры

fread(&mydata, sizeof(struct data), 1, fp);
// либо
fread(&mydata, sizeof(mydata), 1, fp); //

либо
fread(dat, sizeof(mydata), 1, fp);

Чтение структуры fread(&mydata, sizeof(struct data), 1, fp); // либо fread(&mydata, sizeof(mydata), 1, fp);

Слайд 22

Пример 8. Цикл для чтения из файла

чтениe записи с проверкой обнаружения конца файла

в качестве условия окончания цикла
while( fread(dat, sizeof(mydata), 1, fp) != 0)
{
printf(“%d ”, mydata.day);
printf(“%s”, mydata.month);
printf(“%d”, mydata.year);
}

Пример 8. Цикл для чтения из файла чтениe записи с проверкой обнаружения конца

Слайд 23

Передача параметров функции 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

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

Слайд 24

Пример 9.

#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

Пример 9. #include int main ( int argc, char *argv[]) { int i=0;

Имя файла: Числовые-файлы.-Файлы-записей.-Лекция-3.pptx
Количество просмотров: 68
Количество скачиваний: 0