.: [предыдущая | оглавление | следующая] :.

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.

.: [предыдущая | оглавление | следующая] :.