Как изменить и прочитать файл в Си?

В 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);

Обратите внимание, что приведенные примеры являются простыми и не обрабатывают все возможные ошибки, связанные с работой с файлами. В реальных приложениях рекомендуется внимательно проверять ошибки и обрабатывать их соответствующим образом.