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

Текстовые файлы

Текстовые файлы представляют собой последовательность строк различной длины, каждая из которых заканчивается меткой EOLnEnd Of Line – конец строки (последовательность символов #13#10). В конце файла стоит метка EOFEnd Of File.

Запись данных в текстовый файл практически не отличается от вывода данных на экран терминала. Чтение же данных из текстового файла имеет свои особенности.

Объявляется текстовый файл указателем на него:

FILE *f;

где fуказатель на файл – имя логического файла (файловая переменная),

FILE – служебное слово – только заглавными буквами!

Перед началом работы с файлом необходимо связать имя логического файла (файловую переменную) с соответствующим ему физическим файлом на внешнем носителе – открыть файл:

f=fopen(“путь”, “режим”);

где путь – полный путь к файлу на внешнем носителе,

режим – режим открытия файла:

r – чтение (read),

w – запись (write),

a – добавление в конец файла (append),

r+ - чтение с обновлением (r + w),

w+ - запись с обновлением,

a+ - добавление с обновлением.

FILE *f_text;

f_text=fopen(“D:/User/my_file.txt”, “w”); // по указанному // пути создан текстовый файл // my_file.txt и открыт // для записи

Если файл с таким именем уже существовал, то он очищается (из него удаляется информация).

Форматная запись (вывод) в файл осуществляется функцией:

fprintf(указатель на файл, формат вывода, список вывода);

Пример 1: записать в файл my_file.txt построчно значения элементов следующего массива mass34 :

1 2 3 4

5 6 7 8

9 10 11 12

Программа:

const int n=3;

const int m=4;

const int k=m*m;

int i, j;

int mass[n][m]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

Int vector[k];

FILE *f_text;

f_text=fopen(“D:/User/my_file.txt”, “w”); // файл открыт // для записи

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

{

for (j=0; j<m; j++)

fprintf(f_text, “%5d”, mass[i][j]);

fprintf(f_text, “\n”);

}

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

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

1 2 3 4

5 6 7 8

9 10 11 12

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

Перед чтением данных из файла его необходимо открыть для чтения:

f=fopen(“путь”, “r”);

Если файл не найден, то значение указателя f будет равно NULL.

Форматированное чтение (ввод) из файла осуществляется функцией:

fscanf(указатель на файл, формат ввода, список ввода);

Прочитаем созданный файл и запишем числа в вектор 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_1:\n");

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

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

printf("\n");

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