Как очистить файл? - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д