Как очистить файл? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно использовать функции нижнего уровня, для того что бы очистить файл. В функциях верхнего уровня все просто
FILE *fp = fopen("FileName", "w");
но в функциях нижнего уровня почему то, по не понятной мне причине не работает
int fd = open("FileName", O_WRONLY);
Преподаватель сказал, что он должен очищать файл при открытии, но в итоге он не очищает Функция creat, она обнуляет файл, это все срабатывает, но запись в дальнейшим не совершается И flag = O_TRUNC, в open очищает файл, но записать потом опять не получается Или что не так делаю? Какие способы есть еще?
int main() 
{
    setlocale(LC_ALL, "Russian");
    double start_time = clock();  
    char str[20] = "1.txt";
        int sch = 0, fd;
        char t;
        fd = aopen(str, O_RDWR);
    int count = 0;
    count = LengthFile(fd); 
    int *DinMas;    
        DinMas = (int*) malloc (count*sizeof(int));
        for(int i = 0; i < count; i++)
    {
           DinMas[i] = agetb(fd, i);
        }
    aclose(fd);     
    fd = aopen(str, O_WRONLY);
        printf("%d\n", count);        
        for(int i = count/2, j = 0; i < count; i++, j++)
       {                        
      printf("%c ", DinMas[i]);
          asetb(fd, j, DinMas[i]);  
        }
    aclose(fd);
    getch();
}
Задача : Узнать длину файла, и перезаписать любую половину в этот же файл

Решение задачи: «Как очистить файл?»

textual
Листинг программы
// У меня этот код сработал под Oracle Linux при заранее созданном файле try.dat
#include <fcntl.h>
main()
{
  int h;
  h = open("try.dat", O_TRUNC | O_RDWR);
  write(h, "AAAA", 4);
  return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Сначала подключается библиотека fcntl.h, которая содержит функции для работы с файлами и каталогами.
  2. Затем функция main() начинает выполнение программы.
  3. Создается переменная h типа int, которая будет использоваться для работы с файлом.
  4. Функция open() используется для открытия файла с именем try.dat. Открытие файла происходит в режиме O_TRUNC | O_RDWR, что означает, что файл будет открыт для чтения и записи, а его размер будет установлен в 0 байт.
  5. Функция write(h, AAAA, 4) записывает строку AAAA длиной 4 байта в файл, который был открыт в предыдущем шаге.
  6. Функция main() возвращает 0, что означает успешное выполнение программы. Таким образом, этот код открывает файл try.dat и записывает в него строку AAAA.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.417 из 5
Похожие ответы