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

    C, чтение и запись документов

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

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

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

    открыть файл

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

    FILE *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 );fclose (фп);}

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

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

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

    int fgetc ( ФАЙЛ * fp );

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

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

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

    Если эта функция встречает символ разрыва строки '\n' или конец файла перед чтением последнего символа, то возвращаются только прочитанные символы, включая разрывы строк.Вы также можете использовать функцию 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);fclose (фп);}

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

    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ОНУ/ коммуникацияОНУ/ разумныйОНУ/ волокноОНУи т. д.) собрал мощную команду разработчиков программного обеспечения, чтобы каждый клиент мог настроить эксклюзивные требования, которые в нем нуждаются, а также сделать наши продукты более интеллектуальными и продвинутыми.



    веб-сайт