C Управление файлами
Файл может быть использован для хранения большого объема постоянных данных. Как и многие другие языки, «С» предоставляет следующие функции управления файлами:
- Создание файла
- Открытие файла
- Чтение файла
- Запись в файл
- Закрытие файла
Ниже приведены наиболее важные функции управления файлами, доступные в «C»
| функция | цель |
| fopen () | Создание файла или открытие существующего файла |
| fclose () | Закрытие файла |
| fprintf () | Запись блока данных в файл |
| fscanf () | Чтение данных блока из файла |
| getc () | Читает один символ из файла |
| putc () | Записывает один символ в файл |
| getw () | Читает целое число из файла |
| putw () | Запись целого числа в файл |
| fseek () | Устанавливает позицию указателя файла в указанном месте |
| ftell () | Возвращает текущую позицию указателя файла |
| перемотка () | Устанавливает указатель файла в начале файла |
В этом уроке вы узнаете
- Как создать файл
- Как закрыть файл:
- Запись в файл
- Чтение данных из файла
- Интерактивное чтение и запись файлов с помощью getc и putc
Как создать файл
Всякий раз, когда вы хотите работать с файлом, первым шагом является создание файла. Файл — это не что иное, как пространство в памяти, где хранятся данные.
Для создания файла в программе «C» используется следующий синтаксис:
FILE *fp;
fp = fopen ("file_name", "mode");
В приведенном выше синтаксисе файл представляет собой структуру данных, которая определена в стандартной библиотеке.
fopen — это стандартная функция, которая используется для открытия файла.
- Если файл отсутствует в системе, он создается и затем открывается.
- Если файл уже присутствует в системе, он открывается напрямую с помощью этой функции.
fp — указатель файла, который указывает на тип файла.
Каждый раз, когда вы открываете или создаете файл, вы должны указать, что вы собираетесь делать с файлом. Файл в программировании «C» может быть создан или открыт для чтения / записи. Режим используется, чтобы указать, хотите ли вы открыть файл для какой-либо из указанных ниже целей. Ниже приведены различные типы режимов программирования «C», которые можно использовать при работе с файлом.
| Файловый режим | Описание |
| р | Откройте файл для чтения. Если файл находится в режиме чтения, данные не удаляются, если файл уже присутствует в системе. |
| вес | Откройте файл для записи. Если файл находится в режиме записи, то создается новый файл, если файл вообще не существует. Если файл уже присутствует в системе, то все данные внутри файла обрезаются и открываются для записи. |
| a | Откройте файл в режиме добавления. Если файл находится в режиме добавления, файл открывается. Содержимое файла не изменяется. |
| г + | открыт для чтения и записи с самого начала |
| W + | открыть для чтения и записи, перезаписать файл |
| а + | открыть для чтения и записи, добавление в файл |
В данном синтаксисе имя файла и режим указываются в виде строк, поэтому они всегда должны быть заключены в двойные кавычки.
Пример:
#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 (char, file_pointer) : записывает символ в файл, на который указывает file_pointer.
- fputs (str, file_pointer) : записывает строку в файл, на который указывает file_pointer.
- fprintf (file_pointer, str, variable_lists) : выводит строку в файл, на который указывает file_pointer. Строка может дополнительно включать спецификаторы формата и список переменных variable_lists.
Программа ниже показывает, как выполнить запись в файл:
Функция 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», который указывает, что предложение было успешно записано. Процесс состоит в том, чтобы взять каждый символ массива и записать его в файл.
- В вышеупомянутой программе мы создали и открыли файл с именем fputc_test.txt в режиме записи и объявили нашу строку, которая будет записана в файл.
- Мы делаем символьную операцию записи, используя цикл 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);
}
ВЫВОД:
- В вышеупомянутой программе мы создали и открыли файл с именем fputs_test.txt в режиме записи.
- После того, как мы выполним операцию записи с использованием функции fputs (), написав три разных строки
- Затем файл закрывается с помощью функции 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;
}
ВЫВОД:
- В вышеупомянутой программе мы создали и открыли файл с именем fprintf_test.txt в режиме записи.
- После выполнения операции записи с использованием функции fprintf () путем записи строки файл закрывается с помощью функции fclose.
Чтение данных из файла
Есть три разные функции, предназначенные для чтения данных из файла
- fgetc (file_pointer): возвращает следующий символ из файла, на который указывает указатель файла. Когда достигнут конец файла, EOF отправляется обратно.
- fgets (buffer, n, file_pointer): он читает n-1 символов из файла и сохраняет строку в буфере, в котором символ NULL ‘\ 0’ добавляется как последний символ.
- fscanf (file_pointer, translation_specifiers, variable_adresses) : используется для анализа и анализа данных. Он читает символы из файла и назначает входные данные для списка указателей переменных variable_adresses, используя спецификаторы преобразования. Помните, что, как и в случае с scanf, fscanf прекращает чтение строки, когда встречается пробел или символ новой строки.
Следующая программа демонстрирует чтение из файла 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
- В вышеупомянутой программе мы открыли файл с именем «fprintf_test.txt», который был ранее написан с использованием функции fprintf (), и он содержит строку «Learning C with Guru99». Мы читаем это, используя функцию fgets (), которая читает строку за строкой, где размер буфера должен быть достаточным для обработки всей строки.
- Мы снова открываем файл, чтобы сбросить файл указателя так, чтобы он указывал на начало файла. Создайте различные строковые переменные для обработки каждого слова в отдельности. Распечатайте переменные, чтобы увидеть их содержимое. Fscanf () в основном используется для извлечения и анализа данных из файла.
- Снова откройте файл, чтобы сбросить файл указателя так, чтобы он указывал на начало файла. Читайте данные и печатайте их из файла символ за символом, используя функцию getc (), пока не встретите оператор EOF
- После выполнения операции чтения файла с использованием разных вариантов мы снова закрыли файл с помощью функции fclose.
Интерактивное чтение и запись файлов с помощью getc и putc
Это самые простые файловые операции. Getc обозначает get персонажа, а 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;
}
Вывод:
- В вышеупомянутой программе мы создали и открыли файл с именем demo в режиме записи.
- После выполнения операции записи файл закрывается с помощью функции fclose.
- Мы снова открыли файл, который теперь содержит данные в режиме чтения. Цикл while будет выполняться, пока eof не будет найден. Как только будет найден конец файла, операция будет прервана, и данные будут отображены с помощью функции printf.
- После выполнения операции чтения файл снова закрывается с помощью функции fclose.
Резюме
- Файл — это пространство в памяти, где хранятся данные.
- Программирование ‘C’ предоставляет различные функции для работы с файлом.
- Механизм манипулирования файлами называется управлением файлами.
- Файл должен быть открыт перед выполнением операций с ним.
- Файл может быть открыт в режиме чтения, записи или добавления.
- Функции Getc и Putc используются для чтения и записи одного символа.
- Функция fscanf () позволяет читать и анализировать данные из файла.
- Мы можем прочитать (используя функцию getc ) весь файл, выполнив цикл, чтобы охватить весь файл, пока не встретится EOF
- Мы можем записать в файл после создания его имени, используя функцию fprintf (), и он должен иметь символ новой строки в конце текстовой строки.










