Ввод/вывод файлов C:создание, открытие, чтение, запись и закрытие файла
C Управление файлами
Файл можно использовать для хранения большого объема постоянных данных. Как и многие другие языки, «C» предоставляет следующие функции управления файлами,
- Создание файла
- Открытие файла
- Чтение файла
- Запись в файл
- Закрытие файла
Ниже приведены наиболее важные функции управления файлами, доступные в «C»,
В этом уроке вы узнаете-
- Как создать файл
- Как закрыть файл:
- Запись в файл Функция
- fputc():
- fputs() Функция:
- fprintf()Функция:
- Чтение данных из файла
- Интерактивное чтение и запись файлов с помощью getc и putc
Как создать файл
Всякий раз, когда вы хотите работать с файлом, первым шагом будет создание файла. Файл — это не что иное, как пространство в памяти, где хранятся данные.
Для создания файла в программе на языке C используется следующий синтаксис,
FILE *fp; fp = fopen ("file_name", "mode");
В приведенном выше синтаксисе файл представляет собой структуру данных, определенную в стандартной библиотеке.
fopen — это стандартная функция, которая используется для открытия файла.
- Если файл отсутствует в системе, он создается, а затем открывается.
- Если файл уже присутствует в системе, он напрямую открывается с помощью этой функции.
fp — указатель файла, указывающий на тип файла.
Всякий раз, когда вы открываете или создаете файл, вы должны указать, что вы собираетесь делать с файлом. Файл в программировании на языке C может быть создан или открыт для чтения/записи. Режим используется, чтобы указать, хотите ли вы открыть файл для какой-либо из указанных ниже целей. Ниже приведены различные типы режимов программирования на языке C, которые можно использовать при работе с файлом.
режиме добавления. Если файл находится в режиме добавления, то файл открывается. Содержимое файла не меняется. 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(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(указатель_файла, параметры_конверсии, адреса_переменных) :используется для разбора и анализа данных. Он считывает символы из файла и присваивает ввод списку указателей переменных variable_addresses, используя спецификаторы преобразования. Имейте в виду, что, как и в случае с 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() и содержит строку «Изучение C с Guru99». Мы читаем его с помощью функции fgets(), которая считывает строку за строкой, при этом размер буфера должен быть достаточным для обработки всей строки.
- Мы снова открываем файл, чтобы сбросить файл указателя на начало файла. Создайте различные строковые переменные для обработки каждого слова отдельно. Распечатайте переменные, чтобы увидеть их содержимое. Функция fscanf() в основном используется для извлечения и анализа данных из файла.
- Повторно откройте файл, чтобы сбросить файл указателя на начало файла. Считайте данные и распечатайте их из файла символ за символом, используя функцию getc(), пока не встретится оператор EOF
- После выполнения операции чтения файла с использованием разных вариантов мы снова закрыли файл с помощью функции 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; }
Вывод:
- В приведенной выше программе мы создали и открыли файл с именем demo в режиме записи.
- После выполнения операции записи файл закрывается с помощью функции fclose.
- Мы снова открыли файл, который теперь содержит данные в режиме чтения. Цикл while будет выполняться до тех пор, пока не будет найден eof. Как только будет найден конец файла, операция будет прекращена, а данные будут отображены с помощью функции printf.
- После выполнения операции чтения файл снова закрывается с помощью функции fclose.
Обзор
- Файл – это область памяти, в которой хранятся данные.
- Программирование на языке C предоставляет различные функции для работы с файлом.
- Механизм управления файлами называется управлением файлами.
- Файл должен быть открыт перед выполнением операций над ним.
- Файл можно открыть в режиме чтения, записи или добавления.
- Функции Getc и putc используются для чтения и записи одного символа.
- Функция fscanf() позволяет читать и анализировать данные из файла
- Мы можем читать (используя getc функция) весь файл, выполняя цикл, чтобы охватить весь файл, пока не встретится EOF
- Мы можем писать в файл после создания его имени с помощью функции fprintf() и он должен иметь символ новой строки в конце текста строки.
Язык C
- Переменные C# и (примитивные) типы данных
- C Вход Выход (ввод/вывод)
- C Обработка файлов
- Файловый ввод-вывод Python
- Apacer:во всем мире выпущены карты CV110-SD и CV110-MSD
- Apacer:серия SSD промышленного класса SV250 со скоростью чтения / записи 560 и 520 МБ / с
- Acceed:модули ввода-вывода для масштабируемой передачи данных
- Коммутационный кабель ввода-вывода Raspberry PI и адаптер коммутационной панели
- C - файловый ввод/вывод
- C — заголовочные файлы