Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Ввод/вывод файлов C:создание, открытие, чтение, запись и закрытие файла

C Управление файлами

Файл можно использовать для хранения большого объема постоянных данных. Как и многие другие языки, «C» предоставляет следующие функции управления файлами,

  1. Создание файла
  2. Открытие файла
  3. Чтение файла
  4. Запись в файл
  5. Закрытие файла

Ниже приведены наиболее важные функции управления файлами, доступные в «C»,

функция цель <й> fopen() Создание файла или открытие существующего файлаfclose() Закрытие файлаfprintf() Запись блока данных в файлfscanf() Чтение данных блока из файлаgetc() Читает один символ из файлаputc() Записывает один символ в файлgetw() Читает целое число из файлаputw() Запись целого числа в файлfseek() Устанавливает положение указателя файла в указанное местоftell() Возвращает текущую позицию указателя файлаперемотка назад() Устанавливает указатель файла в начало файла


В этом уроке вы узнаете-

Как создать файл

Всякий раз, когда вы хотите работать с файлом, первым шагом будет создание файла. Файл — это не что иное, как пространство в памяти, где хранятся данные.

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

FILE *fp;
fp = fopen ("file_name", "mode");

В приведенном выше синтаксисе файл представляет собой структуру данных, определенную в стандартной библиотеке.

fopen — это стандартная функция, которая используется для открытия файла.

fp — указатель файла, указывающий на тип файла.

Всякий раз, когда вы открываете или создаете файл, вы должны указать, что вы собираетесь делать с файлом. Файл в программировании на языке C может быть создан или открыт для чтения/записи. Режим используется, чтобы указать, хотите ли вы открыть файл для какой-либо из указанных ниже целей. Ниже приведены различные типы режимов программирования на языке C, которые можно использовать при работе с файлом.

Файловый режим Описание rОткрыть файл для чтения. Если файл находится в режиме чтения, то никакие данные не удаляются, если файл уже присутствует в системе. wОткройте файл для записи. Если файл находится в режиме записи, то создается новый файл, если файл вообще не существует. Если файл уже присутствует в системе, то все данные внутри файла усекаются, и он открывается для записи.a Откройте файл в
режиме добавления. Если файл находится в режиме добавления, то файл открывается. Содержимое файла не меняется. r+ открыть для чтения и записи с началаw+открыть для чтения и записи, перезаписать файлa+открыть для чтения и записи, добавить в файл

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

Пример:

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("data.txt", "w");
}

Вывод:

Файл создается в той же папке, где вы сохранили свой код.

Вы можете указать путь, по которому вы хотите создать файл

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("D://data.txt", "w");
}

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

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

«C» предоставляет функцию fclose для выполнения операции закрытия файла. Синтаксис fclose следующий:

fclose (file_pointer);

Пример:

FILE *fp;
fp  = fopen ("data.txt", "r");
fclose (fp);

Функция fclose принимает в качестве аргумента указатель файла. Затем файл, связанный с указателем файла, закрывается с помощью функции fclose. Возвращает 0, если закрытие прошло успешно, и EOF (конец файла), если при закрытии файла произошла ошибка.

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

В программировании на языке C файлы автоматически закрываются при завершении программы. Закрытие файла вручную путем написания функции fclose является хорошей практикой программирования.

Запись в файл

В C при записи в файл символы новой строки «\n» должны добавляться явно.

Библиотека stdio предлагает необходимые функции для записи в файл:

В приведенной ниже программе показано, как выполнить запись в файл:

Функция fputc():

#include <stdio.h>
int main() {
        int i;
        FILE * fptr;
        char fn[50];
        char str[] = "Guru99 Rocks\n";
        fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"
        for (i = 0; str[i] != '\n'; i++) {
            /* write to file using fputc() function */
            fputc(str[i], fptr);
        }
        fclose(fptr);
        return 0;
    }

Вывод:

Приведенная выше программа записывает один символ в файл fputc_test.txt. файла, пока не дойдет до символа следующей строки «\n», указывающего на то, что предложение было успешно записано. Процесс заключается в том, чтобы взять каждый символ массива и записать его в файл.

  1. В приведенной выше программе мы создали и открыли файл с именем fputc_test.txt в режиме записи и объявили нашу строку, которая будет записана в файл.
  2. Мы выполняем посимвольную операцию записи, используя цикл for, и помещаем каждый символ в наш файл до тех пор, пока не встретится символ «\n», после чего файл закрывается с помощью функции fclose.

fputs() Функция:

#include <stdio.h>
int main() {
        FILE * fp;
        fp = fopen("fputs_test.txt", "w+");
        fputs("This is Guru99 Tutorial on fputs,", fp);
        fputs("We don't need to use for loop\n", fp);
        fputs("Easier than fputc function\n", fp);
        fclose(fp);
        return (0);
    }

ВЫВОД:

  1. В приведенной выше программе мы создали и открыли файл с именем fputs_test.txt в режиме записи.
  2. После того, как мы выполним операцию записи с помощью функции fputs(), записав три разные строки
  3. Затем файл закрывается с помощью функции fclose.

Функция fprintf():

#include <stdio.h>
    int main() {
        FILE *fptr;
        fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"
        /* write to file */
        fprintf(fptr, "Learning C with Guru99\n");
        fclose(fptr);
        return 0;
    }

ВЫВОД:

  1. В приведенной выше программе мы создали и открыли файл с именем fprintf_test.txt в режиме записи.
  2. После выполнения операции записи с помощью функции fprintf() путем записи строки файл закрывается с помощью функции fclose.

Чтение данных из файла

Есть три разные функции, предназначенные для чтения данных из файла

Следующая программа демонстрирует чтение из файла fputs_test.txt с использованием функций fgets(), fscanf() и fgetc() соответственно:

#include <stdio.h>
int main() {
        FILE * file_pointer;
        char buffer[30], c;

        file_pointer = fopen("fprintf_test.txt", "r");
        printf("----read a line----\n");
        fgets(buffer, 50, file_pointer);
        printf("%s\n", buffer);

        printf("----read and parse data----\n");
        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        char str1[10], str2[2], str3[20], str4[2];
        fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);
        printf("Read String1 |%s|\n", str1);
        printf("Read String2 |%s|\n", str2);
        printf("Read String3 |%s|\n", str3);
        printf("Read String4 |%s|\n", str4);

        printf("----read the entire file----\n");

        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        while ((c = getc(file_pointer)) != EOF) printf("%c", c);

        fclose(file_pointer);
        return 0;
    }

Результат:

----read a line----
Learning C with Guru99

----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99

  1. В приведенной выше программе мы открыли файл с именем «fprintf_test.txt», который был ранее написан с использованием функции fprintf() и содержит строку «Изучение C с Guru99». Мы читаем его с помощью функции fgets(), которая считывает строку за строкой, при этом размер буфера должен быть достаточным для обработки всей строки.
  2. Мы снова открываем файл, чтобы сбросить файл указателя на начало файла. Создайте различные строковые переменные для обработки каждого слова отдельно. Распечатайте переменные, чтобы увидеть их содержимое. Функция fscanf() в основном используется для извлечения и анализа данных из файла.
  3. Повторно откройте файл, чтобы сбросить файл указателя на начало файла. Считайте данные и распечатайте их из файла символ за символом, используя функцию getc(), пока не встретится оператор EOF
  4. После выполнения операции чтения файла с использованием разных вариантов мы снова закрыли файл с помощью функции fclose.

Интерактивное чтение и запись файлов с помощью getc и putc

Это самые простые файловые операции. Getc означает получение символа, а putc означает ввод символа. Эти две функции используются для обработки только одного символа за раз.

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

#include <stdio.h>
int main() {
        FILE * fp;
        char c;
        printf("File Handling\n");
        //open a file
        fp = fopen("demo.txt", "w");
        //writing operation
        while ((c = getchar()) != EOF) {
            putc(c, fp);
        }
        //close file
        fclose(fp);
        printf("Data Entered:\n");
        //reading
        fp = fopen("demo.txt", "r");
        while ((c = getc(fp)) != EOF) {
            printf("%c", c);
        }
        fclose(fp);
        return 0;
    }

Вывод:

  1. В приведенной выше программе мы создали и открыли файл с именем demo в режиме записи.
  2. После выполнения операции записи файл закрывается с помощью функции fclose.
  3. Мы снова открыли файл, который теперь содержит данные в режиме чтения. Цикл while будет выполняться до тех пор, пока не будет найден eof. Как только будет найден конец файла, операция будет прекращена, а данные будут отображены с помощью функции printf.
  4. После выполнения операции чтения файл снова закрывается с помощью функции fclose.

Обзор


Язык C

  1. Переменные C# и (примитивные) типы данных
  2. C Вход Выход (ввод/вывод)
  3. C Обработка файлов
  4. Файловый ввод-вывод Python
  5. Apacer:во всем мире выпущены карты CV110-SD и CV110-MSD
  6. Apacer:серия SSD промышленного класса SV250 со скоростью чтения / записи 560 и 520 МБ / с
  7. Acceed:модули ввода-вывода для масштабируемой передачи данных
  8. Коммутационный кабель ввода-вывода Raspberry PI и адаптер коммутационной панели
  9. C - файловый ввод/вывод
  10. C — заголовочные файлы