В C есть несколько способов для чтения и записи файлов. Рассмотрим наиболее распространенные из них.
1. Использование функций fopen
, fscanf
и fprintf
:
Для начала нужно открыть файл с помощью функции fopen
, указав имя файла и режим доступа (например, "r" для чтения, "w" для записи). Функция fopen
возвращает указатель на файловую структуру FILE
. Затем можно использовать функцию fscanf
для чтения данных из файла и функцию fprintf
для записи данных в файл. После завершении работы с файлом нужно закрыть его с помощью функции fclose
.
Пример чтения файла:
FILE *file = fopen("filename.txt", "r"); if (file == NULL) { printf("Ошибка открытия файлаn"); return 1; } int value; while (fscanf(file, "%d", &value) != EOF) { printf("%dn", value); } fclose(file);
Пример записи файла:
FILE *file = fopen("filename.txt", "w"); if (file == NULL) { printf("Ошибка открытия файлаn"); return 1; } int value = 12345; fprintf(file, "%dn", value); fclose(file);
2. Использование функций open
, read
и write
:
В POSIX-совместимых системах можно использовать функцию open
для открытия файла и получения файлового дескриптора. Функция open
принимает имя файла, флаги доступа и режим файлов (например, "O_RDONLY" для чтения, "O_WRONLY" для записи). Затем можно использовать функции read
и write
для чтения и записи данных в файл. Файл нужно закрыть с помощью функции close
.
Пример чтения файла:
int fd = open("filename.txt", O_RDONLY); if (fd == -1) { printf("Ошибка открытия файлаn"); return 1; } char buffer[1024]; ssize_t numRead; while ((numRead = read(fd, buffer, sizeof(buffer))) > 0) { printf("%.*s", (int)numRead, buffer); } close(fd);
Пример записи файла:
int fd = open("filename.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); if (fd == -1) { printf("Ошибка открытия файлаn"); return 1; } char *data = "Hello, file!"; ssize_t numWritten = write(fd, data, strlen(data)); close(fd);
Обратите внимание, что приведенные примеры являются простыми и не обрабатывают все возможные ошибки, связанные с работой с файлами. В реальных приложениях рекомендуется внимательно проверять ошибки и обрабатывать их соответствующим образом.