11.3 Текстовые файлы
Понятие
текстового файла появилось на заре компьютерной эры, когда тексты в файле
хранились в ASCII коде и многие текстовые редакторы хранили тексты в таких
файлах. Особую роль в таких файлах имеет служебные символа «перевод строки» и
«возврат каретки». Эти два символа, как правило, указывали на конец строки.
Поэтому для работы с такими файлами был специально предусмотрен режим «работа с
текстом». В этом режиме некоторые функции автоматически читают строку до указанных служебных символов, не включая сами символы
в выходной буфер. Ниже показа программа создающая текстовый файл, записывающая
три строки с помощью одного вызова функции fwrite, функция fpus вызывается
также один раз и производит запись двух строк. Затем указатель файла
перемещается в начало с помощью вызова функции fseek. Далее организуется цикла
пока не до- стигли конца файла и читаем строки с помощью функции fgets. Заодно
считаем количество прочитанных строк. Очевидно, их будет 5. Поскольку в файле
записано 4 символа возврата каретки (это ’\n’) и конец файла.
Таблица 11.1: Значения строкового параметра mode
|
r |
Открыть только для чтения |
|
w |
Открыть новый файл, если файл уже существует,
то его содержимое удаляется на его место записывается новый |
|
a |
Открыть для записи в конец файла, если файл не существует,
то он создается.
|
|
r + |
Открыть файл для чтения и перезаписи,
также можно дописывать в конец файла
|
|
w +
|
Открыть новый файл для чтения и перезаписи,
также можно дописывать в конец файла.
Если файл суще ствует то старый удаляется
|
|
a +
|
Открыть для записи и перезаписи за концом существующего файла,
если файл не существует создается новый. |
-
#include
<string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
FILE *stream;
char
string[] = "First\nSecond\nThird\n";
char
string2[] = "Hello!\nWorld!!!";
char
msg[20];
char
*ptr;
int
i=0;
stream =
fopen("Example1.txt", "w+t"); //открыть
файл в текстовой моде
fwrite(string,
strlen(string), 1, stream); //записать первую строку
fputs(string2,stream); //записать вторую строку
fseek(stream, 0, SEEK_SET); //переместить указатель в начало файла
while(!feof(stream))
//цикл для чтения пока не достигли конца файла
{
i++; //счетчик
обращений к файлу
ptr=fgets(msg,
strlen(string)+1, stream); //прочитать строку из
тестового файла
if(ptr!=NULL) printf("%d %s",i, msg); //отпечатать если прочитана строка
}
fclose(stream); //закрыть файл
getch();
return
0;
}
Необходимо
отметить, что современные текстовые редакторы имеют соб- ственный формат
хранения текста, например, MicrosoftWord имеет формат DOC. В настоящее время
файлы содержащие тексты в ASCII коде имеют расшиоение TXT.
|