Типы данных в языке C++__________________________________689

ftinclude <stdio.h>

FILE *F;

if ((F = fopen("Test.txt", "rt")) == NULL)
{

ShowMessage("Файл не удается открыть");

return;

}

...         // чтение из файла

fclose(F); // закрытие файла

Здесь объявляется переменная F — указатель потока и связывается с файлом
«Test.txt», открываемым как текстовый только для чтения. Если открыть файл не
удалось (например, он не существует), появляется сообщение об ошибке.

Из открытого таким образом файла можно читать информацию. После оконча-
ния чтения файл должен быть закрыт функцией fclose(F).

Если бы файл открывался функцией

fopen("Test.txt", "rt+")

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

Из текстового файла можно читать информацию по строкам или по символам.
Чтение строки осуществляется функцией fgets:

char *fgets(char *s, int n, FILE *stream) ;

В вызове функции s — указатель на буфер, в который читается строка, n —
число читаемых символов. Чтение символов в строку происходит или до появле-
ния символа конца строки «\п» (этот символ записывается в строку), или читается
n — 1 символ. В конце прочитанной строки записывается нулевой символ.

Например, чтение и отображение в компоненте Memol всех строк файла мо-
жет быть организовано следующим образом:

char s [80] ;

Memol->Clear() ;

do
(

fgets(s,80,F) ;

if(feof(F)) break;

if(s[strlen(s)-l] == '\n') s[strlen(s)-l] = 0;

Memol->Lines->Add(s) ;

}
fclose(F); // закрытие файла

Функция fgets читает очередную строку. Функция feof проверяет, не прочи-
тан ли символ конца файла. При чтении этого символа feof возвращает ненулевое
значение и цикл прерывается. Если признака конца файла нет, то оператор

if(s[strlen(s)-l] == '\n') s [strlen(s)-1] = 0;

убирает из строки последний символ, если он оказывается символом перевода
строки. Эта операция не обязательна, но наличие символа «\п» испортит вид стро-
ки в окне Memol. Затем прочитанная строка заносится в окно редактирования.

Чтение из текстового файла форматированных данных может осуществляться
функцией fscanf.

int fscanf(FILE *stream, const char *format[, address, ...]);

Ее параметр format определяет строку форматирования аргументов, заданных
своими адресами. Подробно строка форматирования рассмотрена в главе 14 в раз-
деле 14.4.2. Сейчас отметим только, что эта строка при чтении обычно состоит из