• Giga@hdv-tech.com
  • Круглосуточный онлайн-сервис:
    • 7189078c
    • sns03
    • 6660e33e
    • YouTube 拷贝
    • инстаграм

    C, Чтение и письмо документов

    Время публикации: 11 августа 2023 г.

    Описывает, как программист C создает, открывает и закрывает текстовый или двоичный файл.

    Файл означает последовательность байтов, будь то текстовый файл или двоичный файл. Язык C не только обеспечивает доступ к функциям верхнего уровня, но также обеспечивает базовый вызов (ОС) для обработки файлов на устройстве хранения. . В этой главе будут объяснены важные моменты в управлении документами.

    открытый файл

    Обычно при использовании функции fopen() для создания нового файла или открытия существующего файла этот вызов инициализирует объект типа ФАЙЛ, который содержит всю необходимую информацию для управления потоком. Вот прототип вызова этой функции:

    ФАЙЛ *fopen (const char * имя файла, const char * mode);

    Здесь имя файла — это строка для имени файла, значение режима доступа может быть одним из следующих значений:

    шаблон

    описание

    r

    Откройте существующий текстовый файл, который можно прочитать.

    w

    Откройте текстовый файл, который позволяет осуществлять запись в файл. Если файл не существует, создается новый файл. Здесь ваша программа записывает содержимое с начала файла. Если файл существует, он будет обрезан до нулевой длины и перезаписан.

    a

    Откройте текстовый файл и напишите в него запись в режиме добавления. Если файл не существует, создается новый файл. Здесь ваша программа добавляет содержимое к уже имеющимся у вас файлам.

    r+

    Откройте текстовый файл, который позволит вам читать и записывать его.

    w+

    Откройте текстовый файл, который позволит вам читать и записывать его. Если файл уже существует, он усекается до нулевой длины, а если файл не существует, создается новый файл.

    a+

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

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

    "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

    закрытый файл

    Чтобы закрыть файл, используйте функцию fclose(). Прототип функции следующий:

    int fclose (ФАЙЛ *fp);

    • Если файл закрыт успешно, функция fclose() возвращает ноль, а в случае ошибки возвращает EOF. Эта функция фактически удаляет данные из буфера, закрывает файл и освобождает всю память, используемую для этого файла. EOF — это константа, определенная в заголовочном файле stdio.h.

    Стандартная библиотека C предоставляет различные функции для чтения и записи файлов по символам или в виде строки фиксированной длины.

    Записать в файл

    Вот простейшие функции для записи символов в поток:

    int fputc (int c, ФАЙЛ *fp);

    Функция fputc() записывает символьное значение параметра c в поток вывода, на который указывает fp. Если запись прошла успешно, она возвращает записанный символ и EOF в случае возникновения ошибки. Вы можете использовать следующую функцию для записи в поток строки, заканчивающейся нулем:

    int fputs (const char *s, FILE *fp);

    Функция fputs() записывает строку s в выходной поток, на который указывает fp. Если запись успешна, она возвращает неотрицательное значение и EOF в случае возникновения ошибки. Вы также можете использовать функцию int fprintf (FILE * fp, const char * format,...) записывающую строку в файл. Попробуйте следующий пример:

    Примечание: Убедитесь, что у вас есть доступный каталог tmp, и если он не существует, вам необходимо сначала создать его на своем компьютере.

    /tmp обычно является временным каталогом в системе Linux. Если вы работаете в системе Windows, вам необходимо изменить его на существующий каталог в локальной среде, например: C:\tmp, D:\tmp и т. д.

    живой пример

    #включать int main () { ФАЙЛ *fp = NULL; fp = fopen ("/tmp/test.txt", "w+"); fprintf (fp , "Это проверка fprintf...\n "); fputs ("Это проверка на fputs...\n ", fp ); fзакрыть (фп); }

    Когда приведенный выше код скомпилирован и выполнен, он создает новый файл test.txt в каталоге /tmp. И пишет в две строки, используя две разные функции. Давайте прочитаем этот файл дальше.

    Прочтите файл

    Ниже приведена простейшая функция для чтения одного символа из файла:

    int fgetc (ФАЙЛ * fp);

    Функция fgetc() считывает символ из входного файла, на который указывает fp. Возвращаемое значение — это прочитанный символ и EOF в случае возникновения ошибки. Следующая функция позволяет вам прочитать строку из потока:

    char *fgets (char *buf, int n, FILE *fp);

    Функция fgets() считывает n-1 символов из входного потока, направляемого fp. Он копирует прочитанную строку в буфер buf и добавляет в конец нулевой символ, чтобы завершить строку.

    Если эта функция встречает символ ломаной строки '\ n' или EOF конца файла перед чтением последнего символа, то возвращается только к прочитанным символам, включая разрывы строк. Вы также можете использовать функцию int fscanf (FILE * fp, const char * format,...) для чтения строки из файла, но она прекращает чтение при обнаружении первого пробела и разрыва строки.

    живой пример

    #включать int main () { ФАЙЛ *fp = NULL; усиление чар [255]; fp = fopen ("/tmp/test.txt", "r"); fscanf(fp, "%s", buff); printf ("1: %s \n ", buff ); fgets (buff, 255, (ФАЙЛ *)fp); printf ("2: %s \n ", buff ); fgets (buff, 255, (ФАЙЛ *)fp); printf ("3: %s \n ", buff ); fзакрыть (фп); }

    Когда приведенный выше код компилируется и выполняется, он считывает файлы, созданные в предыдущем разделе, и дает следующие результаты:

    1: Это 2: тестируется на fprintf...

    3: Это проверка fputs...

    Во-первых, метод fscanf() читает только This .потому что он встречает пробел сзади. Во-вторых, вызовите функцию fgets(), чтобы прочитать оставшуюся часть до конца строки. Наконец, вызовите fgets(), чтобы полностью прочитать вторую строку.

    Функция двоичного ввода-вывода

    Следующие две функции используются для двоичного ввода и вывода:

    size_t fread (void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite (const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);

    Обе функции читают и записывают блоки хранения — обычно массивы или структуры.

    Вышеупомянутое о чтении и записи файлов C принадлежит HDV Phoelectron Technology Ltd., технической эксплуатации программного обеспечения. И компания по сетевому оборудованию (например: ACОНУ/ коммуникацияОНУ/ разумныйОНУ/ волокноОНУи т. д.) собрал мощную команду разработчиков программного обеспечения, чтобы каждый клиент настроил эксклюзивные требования, которые в этом нуждаются, а также сделали наши продукты более интеллектуальными и продвинутыми.



    веб-сайт