Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Си.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
2.72 Mб
Скачать

Vector_1:

1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 0

Добавим в последнюю строку файла последовательность чисел 4, 3, 2, 1:

f_text=fopen(“D:/User/my_file.txt”, “a”); // файл открыт // для добавления

for (i=4; i>0; i--)

fprintf(f_text, “%5d”, i);

fprintf(f_text, “\n”);

fclose(f_text); //после записи файл обязательно закрыть!

Структура файла my_file.txt:

1 2 3 4

5 6 7 8

9 10 11 12

4 3 2 1

Снова прочитаем созданный файл и запишем числа в вектор vector16:

f_text=fopen(“D:/User/my_file.txt”, “r”); // файл открыт // для чтения

for (i=0; i<k; i++) // обнуляем вектор

vector[i]=0;

i=0; // индекс очередного элемента

while (!feof(f_text)) // пока не конец файла

{

fscanf(f_text, “%d”, &j); // читаем из него данные

vector[i]=j; // и записываем в вектор

i++;

}

printf("\nVector_2:\n");

for (i=0; i<k; i++)

printf("%4d", vector[i]);

printf("\n");

На экран будет выведено:

Vector_2:

1 2 3 4 5 6 7 8 9 10 11 12 4 3 2 1

Пример 3: создать базу данных на текстовом файле my_base.txt - в каждой его строке записать следующие данные о студентах:

группастрока длиною 10 символов,

фамилия - строка длиною 20 символов,

имя - строка длиною 10 символов,

ср. балл сессии – вещественное число,

оценка по информатике – целое число.

Опишем исходные данные:

char gruppa[10];

char fam[20];

char name[10];

float sr_ball;

Int ocenka;

Создадим текстовый файл my_base.txt и откроем его для записи:

FILE *f_base; // указатель на создаваемый файл

f_base=fopen(“D:/User/my_base.txt”, “w”);

Данные в базу будем вводить циклом с постусловием. Интерфейс программы:

Gruppa: IS-09

Familija: Pupkin

Imja: Vasilij

Sr. ball: 3.14

Ocenka: 3

Gruppa: IS-09

Familija: Ivanov

Imja: Ivan

Sr. ball: 4.09

Ocenka: 5

Gruppa: 0

Запросы продолжаются до тех пор, пока вместо номера группы введем цифру ноль – это терминатор (прерыватель цикла ввода).

После ввода данных об очередном студенте записываем их в файл форматным способом, указывая длину каждого записываемого данного:

fprintf(f_base, “%10s%20s%10s%5.2f%2d\n”, gruppa, fam, name, sr_ball, ozenka);

Программа:

FILE *f_base; // указатель на создаваемый файл

char gruppa_1[10];

char fam_1[20];

char name_1[10];

float sr_ball;

Int ocenka;

f_base=fopen("D:/User/my_base.txt", "w");

do

{

printf("\n gruppa:");

scanf("%s", gruppa);

if (gruppa[0]=='0') // если ноль – выход из цикла ввода

break;

printf("\n familija:");

scanf("%s", fam);

printf("\n imja:");

scanf("%s", name);

printf("\n sr. ball:");

scanf("%f", &sr_ball);

printf("\n ocenka:");

scanf("%d", &ocenka);

fprintf(f_base, "%10s%20s%10s%7.2f%5d\n", gruppa, fam, name, sr_ball, ocenka);

}

while (1); // псевдобесконечный цикл

fclose(f_base); //после записи файл обязательно закрыть!

Структура файла:

IS-09 Pupkin Vasilij 3.14 3

IS-09 Ivanov Ivan 4.09 5

Прочитаем этот файл с выводом на экран прочитанных данных:

f_base=fopen("D:/User/my_base.txt", "r"); // файл открыт

// для чтения

while (!feof(f_base)) // пока не конец файла

{ // читать данные

fscanf(f_base, "%s%s%s%f%d", gruppa, fam, name, &sr_ball, &ocenka);

printf("\n%10s%20s%10s%7.2f%5d", gruppa, fam, name, sr_ball, ocenka); // и выводить их на экран

}

На экран будет выведено:

IS-09 Pupkin Vasilij 3.14 3

IS-09 Ivanov Ivan 4.09 5

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