Как очистить файл? - 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.