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

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

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

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

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

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

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

В этом коде:

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы