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

Содержание:

Anonim

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

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

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

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

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

В этом руководстве вы узнаете:

  • Как создать файл
  • Как закрыть файл:
  • Запись в файл
    • fputc () Функция:
    • fputs () Функция:
    • fprintf () Функция:
  • Чтение данных из файла
  • Интерактивное чтение и запись файлов с помощью getc и putc

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

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

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

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

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

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

  • Если файл отсутствует в системе, он создается и затем открывается.
  • Если файл уже присутствует в системе, он открывается напрямую с помощью этой функции.

fp - это указатель файла, который указывает на тип файла.

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

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

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

Пример:

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

Выход:

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

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

#include 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 (char, file_pointer) : записывает символ в файл, на который указывает file_pointer.
  • fputs (str, file_pointer) : записывает строку в файл, на который указывает file_pointer.
  • fprintf (file_pointer, str, variable_lists) : печатает строку в файл, на который указывает file_pointer. Строка может дополнительно включать спецификаторы формата и список переменных variable_lists.

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

fputc () Функция:

#include 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 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 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.

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

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

  • fgetc (file_pointer): возвращает следующий символ из файла, на который указывает указатель файла. По достижении конца файла EOF отправляется обратно.
  • fgets (buffer, n, file_pointer): он считывает n-1 символов из файла и сохраняет строку в буфере, в котором NULL-символ '\ 0' добавляется в качестве последнего символа.
  • fscanf (file_pointer, conversion_specifiers, variable_adresses) : он используется для синтаксического анализа и анализа данных. Он считывает символы из файла и назначает ввод списку указателей переменных variable_adresses, используя спецификаторы преобразования. Имейте в виду, что, как и в случае со scanf, fscanf перестает читать строку при обнаружении пробела или новой строки.

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

#include 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 pointerchar 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 pointerwhile ((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 () и содержит строку «Learning C with Guru99». Мы читаем его с помощью функции fgets (), которая читает строку за строкой, где размер буфера должен быть достаточным для обработки всей строки.
  2. Мы снова открываем файл, чтобы сбросить указатель файла так, чтобы он указывал на начало файла. Создавайте различные строковые переменные для обработки каждого слова отдельно. Распечатайте переменные, чтобы увидеть их содержимое. Fscanf () в основном используется для извлечения и анализа данных из файла.
  3. Снова откройте файл, чтобы сбросить указатель файла так, чтобы он указывал на начало файла. Считайте данные и распечатайте их из файла посимвольно с помощью функции getc (), пока не встретится оператор EOF.
  4. После выполнения операции чтения файла с использованием разных вариантов, мы снова закрыли файл с помощью функции fclose.

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

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

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

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = 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' предоставляет различные функции для работы с файлом.
  • Механизм управления файлами называется управлением файлами.
  • Перед выполнением операций над файлом необходимо открыть файл.
  • Файл можно открыть в режиме чтения, записи или добавления.
  • Функции getc и putc используются для чтения и записи одного символа.
  • Функция fscanf () позволяет читать и анализировать данные из файла.
  • Мы можем прочитать (используя функцию getc ) весь файл, зациклившись, чтобы охватить весь файл, пока не встретится EOF
  • Мы можем записать в файл после создания его имени, используя функцию fprintf (), и в конце текста строки должен быть символ новой строки.