Как очистить файл? - C (СИ)
Формулировка задачи:
нужно использовать функции нижнего уровня, для того что бы очистить файл.
В функциях верхнего уровня все просто
но в функциях нижнего уровня почему то, по не понятной мне причине не работает
Преподаватель сказал, что он должен очищать файл при открытии, но в итоге он не очищает
Функция creat, она обнуляет файл, это все срабатывает, но запись в дальнейшим не совершается
И flag = O_TRUNC, в open очищает файл, но записать потом опять не получается
Или что не так делаю?
Какие способы есть еще?
Задача : Узнать длину файла, и перезаписать любую половину в этот же файл
Листинг программы
- FILE *fp = fopen("FileName", "w");
Листинг программы
- int fd = open("FileName", O_WRONLY);
Листинг программы
- 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;
- }
Объяснение кода листинга программы
В этом коде:
- Сначала подключается библиотека fcntl.h, которая содержит функции для работы с файлами и каталогами.
- Затем функция main() начинает выполнение программы.
- Создается переменная h типа int, которая будет использоваться для работы с файлом.
- Функция open() используется для открытия файла с именем
try.dat
. Открытие файла происходит в режиме O_TRUNC | O_RDWR, что означает, что файл будет открыт для чтения и записи, а его размер будет установлен в 0 байт. - Функция write(h,
AAAA
, 4) записывает строкуAAAA
длиной 4 байта в файл, который был открыт в предыдущем шаге. - Функция main() возвращает 0, что означает успешное выполнение программы.
Таким образом, этот код открывает файл
try.dat
и записывает в него строкуAAAA
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д