Курс — «Программирование на C для начинающих». Файловый ввод-вывод. #28 Работа с файлами в С
Здравствуйте, дорогие друзья.
Работа с файлами в языке программирования C позволяет читать и записывать данные в файлы на диске. Это особенно полезно для сохранения данных между запусками программы, обмена данными между различными программами и обработки больших объемов данных. В этом разделе мы рассмотрим основные операции для работы с файлами в C, включая открытие, чтение, запись и закрытие файлов.
Включение библиотеки stdio.h
Для работы с файлами в C необходимо включить стандартную библиотеку stdio.h
, которая предоставляет функции для работы с файлами.
1 |
#include <stdio.h> |
Открытие файла
Для открытия файла используется функция fopen
. Она принимает два аргумента: имя файла и режим открытия. Возвращает указатель на структуру FILE
, который используется для последующих операций с файлом.
1 |
FILE *fopen(const char *filename, const char *mode); |
Режимы открытия файла:
"r"
— открытие для чтения."w"
— открытие для записи (создает новый файл или перезаписывает существующий)."a"
— открытие для добавления (добавляет данные в конец файла)."r+"
— открытие для чтения и записи (файл должен существовать)."w+"
— открытие для чтения и записи (создает новый файл или перезаписывает существующий)."a+"
— открытие для чтения и добавления (добавляет данные в конец файла).
Пример открытия файла для записи:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Ошибка открытия файла\n"); return 1; } printf("Файл успешно открыт\n"); // Закрытие файла fclose(file); return 0; } |
Запись в файл
Для записи данных в файл используются функции fprintf
и fputs
.
fprintf
— записывает форматированные данные в файл.fputs
— записывает строку в файл.
Пример записи данных в файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Ошибка открытия файла\n"); return 1; } fprintf(file, "Пример записи данных в файл\n"); fputs("Еще одна строка\n", file); // Закрытие файла fclose(file); return 0; } |
Чтение из файла
Для чтения данных из файла используются функции fscanf
, fgets
и fgetc
.
fscanf
— читает форматированные данные из файла.fgets
— читает строку из файла.fgetc
— читает один символ из файла.
Пример чтения данных из файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("Ошибка открытия файла\n"); return 1; } char buffer[256]; // Чтение строки из файла while (fgets(buffer, sizeof(buffer), file) != NULL) { printf("%s", buffer); } // Закрытие файла fclose(file); return 0; } |
Закрытие файла
После завершения работы с файлом его необходимо закрыть с помощью функции fclose
. Это освобождает ресурсы, связанные с файлом, и сохраняет все изменения.
1 |
int fclose(FILE *stream); |
Пример закрытия файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Ошибка открытия файла\n"); return 1; } fprintf(file, "Пример записи данных в файл\n"); // Закрытие файла fclose(file); return 0; } |
Обработка ошибок
При работе с файлами важно обрабатывать возможные ошибки, такие как невозможность открытия файла или ошибки при чтении/записи данных. Для этого можно использовать функции ferror
и feof
.
ferror
— проверяет, произошла ли ошибка при последней операции с файлом.feof
— проверяет, достигнут ли конец файла.
Пример обработки ошибок:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("Ошибка открытия файла\n"); return 1; } char buffer[256]; // Чтение строки из файла while (fgets(buffer, sizeof(buffer), file) != NULL) { printf("%s", buffer); } if (ferror(file)) { printf("Ошибка при чтении файла\n"); } else if (feof(file)) { printf("Конец файла достигнут\n"); } // Закрытие файла fclose(file); return 0; } |
Важные моменты
- Открытие файла: Всегда проверяйте, успешно ли открыт файл, прежде чем выполнять операции с ним.
- Закрытие файла: Не забывайте закрывать файл после завершения работы с ним, чтобы освободить ресурсы и сохранить изменения.
- Обработка ошибок: Обрабатывайте возможные ошибки при работе с файлами, чтобы избежать неопределенного поведения программы.
Работа с файлами в C позволяет читать и записывать данные в файлы на диске. Понимание основных операций для работы с файлами, таких как открытие, чтение, запись и закрытие файлов, является ключевым для успешного программирования на C.
На этом все. Всем хорошего дня!