Обработка файлов в C: Руководство для начинающих
Программам обычно нужна структура данных для хранения данных, которые могут им понадобиться во время выполнения. Обычно эти данные хранятся в переменных или массивах. Проблема в том, что он теряется, как только программа завершает выполнение. Это потому, что они временные области памяти.
Если вам нужно, чтобы ваши данные были доступны даже после запуска программы, вам придется сохранить их в файл. Файлы могут быть текстовыми или двоичными.
Эта статья посвящена тому, как управлять текстовыми файлами на языке C. Вот что вам нужно знать.
Открытие файла
Во-первых, важно знать, что вы всегда должны объявлять указатель типа FILE при работе с файлами. Этот указатель необходим для обеспечения связи между файлом и программой.
FILE *filePtr;
Чтобы иметь возможность писать, читать или обновлять файл, вам нужно сначала открыть его. C предоставляет для этого стандартную библиотечную функцию fopen () .
Эта функция принимает два строковых аргумента: имя файла и режим. Если файл, который вы открываете, не находится в каталоге программы, в котором вы сейчас находитесь, вы можете указать путь к нему, а не просто использовать имя файла.
Посмотрите на синтаксис ниже, как использовать fopen () :
filePtr = fopen("filename.txt", "mode");
Переменная filePtr – это указатель типа FILE . Режим аргумент относится к тому , как следует открыть файл. То есть, какие функции предполагается выполнять с файлом.
Существует три режима, в которых вы можете открыть файл в C. Это режимы r, w и a . Чтобы прочитать файл, используйте r . Для записи в файл используйте w . Чтобы добавить данные в конец файла, используйте расширение .
Например, если вы планировали прочитать содержимое файла с именем programming.txt , вы должны использовать приведенный ниже оператор:
filePtr = fopen("programming.txt" , "r");
Помимо r, w и a , есть другие расширенные режимы. Ниже обсуждаются эти режимы для текстовых файлов:
r + и w + : оба этих режима используются для открытия файла для чтения и записи. Разница в том, что r + заставляет fopen () возвращать NULL, если этот файл не существует, тогда как w + вместо этого создает файл. Также следует отметить, что w + перезаписывает файл, если он существует.
a + : этот режим используется для открытия файла для добавления и чтения. Если файл не существует, он создается.
Письмо и чтение
Вы можете использовать функции fprintf и fscanf соответственно для записи и чтения в файл. Эти две функции сопоставимы по функциональности с функциями printf и scanf в базовом вводе- выводе.
#include <stdio.h>
int main(void){
// pointer declaration
FILE *filePtr;
filePtr = fopen("myfile.txt", "w");
//the message below will be written to myfile.txt
fprintf(filePtr, "%s", "Files are permanent memory locations.");
}
В приведенном выше коде показано, как создать файл с именем myfile.txt и затем сохранить в нем сообщение. Чтобы прочитать содержимое вновь созданного файла, см. Приведенный ниже код.
#include <stdio.h>
#include <stdlib.h>
int main(void){
char message[196];
FILE *filePtr;
filePtr = fopen("myfile.txt", "r");
if (filePtr == NULL){
printf("Error opening the file");
//program exists if the pointer returns NULL
exit(1);
}
fscanf(filePtr,"%s", &message);
printf("The message is: %s", message);
fclose(filePtr);
}
Когда вы скомпилируете и запустите приведенный выше код, вы получите файл Files. Вы заметите, что это не полное сообщение, которое вы сохранили в myfile.txt . Но не волнуйтесь. Это не ошибка кода.
Когда программа встречает пробел, она перестает читать содержимое файла. Если бы вместо этого сообщение было написано как Files-are-постоянная-память-местоположения, то вы бы получили весь вывод на свой экран.
В обоих приведенных примерах кода вы должны были заметить оператор fclose () . Вы должны всегда закрывать файл (текстовый или двоичный) после его использования.
Взгляд на программирование на C ++
Достигнув такого уровня обработки файлов в C, вы, вероятно, владеете этим языком выше среднего. Это также означает, что вам следует искать более эффективные способы программирования.
C ++ – это ответ. Это объектно-ориентированная версия языка C. К настоящему времени вы должны засучить рукава, чтобы изучить этот популярный язык.