Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
CppCoder
Зарегистрирован: 06.09.2005 Сообщения: 10 Откуда: Ryazan
|
Добавлено: Сб Сен 10 2005 17:14 Заголовок сообщения: C++ работа с файлами |
|
|
Есть файл, скажем 100 байт. Я с ним работаю (меняю в нем байты, и т.п.) и нужно чтобы он занимал допустим 90 байт, т.е. укоротить его, не прибегая к созданию временного файла. Проще говоря, нужно отрезать из конца файла ненужные байты. Как это возможно? Заранее спасибо! |
|
Вернуться к началу |
|
|
shaman2k5
Зарегистрирован: 30.07.2005 Сообщения: 43 Откуда: Да недалече я... 8)
|
Добавлено: Вс Сен 11 2005 14:51 Заголовок сообщения: re |
|
|
моно сделать так:
создай массив в памяти на 90 байт
удаляешь файл и записываешь
элементы массива в новый файл с тем же именем. _________________ -Пойду, прибью винду.. |
|
Вернуться к началу |
|
|
CppCoder
Зарегистрирован: 06.09.2005 Сообщения: 10 Откуда: Ryazan
|
Добавлено: Ср Сен 14 2005 13:23 Заголовок сообщения: |
|
|
массив... это не выход :( а если файл будет огромный? эдак гиг? |
|
Вернуться к началу |
|
|
crysto
Зарегистрирован: 15.09.2005 Сообщения: 3
|
Добавлено: Чт Сен 15 2005 10:51 Заголовок сообщения: |
|
|
все очень просто.... только в реале нужно обрабатывать реультат каждой функции на наличие ошибок...
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile;
//Создаем файл
hFile=CreateFile("test.txt",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
//Проверяем не было ли ошибки при создании
if (hFile!=INVALID_HANDLE_VALUE)
{
DWORD res_pos;
//Устанавливаем позицию курсора в файле равную 100 байтам от начала
LONG lPosition=100;
res_pos=SetFilePointer(hFile, lPosition, NULL, FILE_BEGIN);
if (res_pos!=INVALID_SET_FILE_POINTER)
{
//Говорим что енто конец файла
SetEndOfFile(hFile);
//после этого длина файла равна 100 байт
}
//Устанавливаем позицию курсора в файле равную 100 байтам от начала
lPosition=50;
res_pos=SetFilePointer(hFile, lPosition, NULL, FILE_BEGIN);
if (res_pos!=INVALID_SET_FILE_POINTER)
{
//Говорим что енто конец файла
SetEndOfFile(hFile);
//после этого длина файла равна 50 байт
}
CloseHandle(hFile);
}
return 0;
} _________________ Нет непокоримых вершин, есть ленивые покорители... |
|
Вернуться к началу |
|
|
DmitryShm
Зарегистрирован: 17.11.2003 Сообщения: 211 Откуда: Казань
|
Добавлено: Чт Сен 15 2005 13:02 Заголовок сообщения: |
|
|
а по-моему разумнее всего использовать средства операционки _________________ love IT |
|
Вернуться к началу |
|
|
CppCoder
Зарегистрирован: 06.09.2005 Сообщения: 10 Откуда: Ryazan
|
Добавлено: Пт Сен 16 2005 20:48 Заголовок сообщения: |
|
|
Большое ПАСИБА! |
|
Вернуться к началу |
|
|
crysto
Зарегистрирован: 15.09.2005 Сообщения: 3
|
Добавлено: Вт Сен 20 2005 12:54 Заголовок сообщения: |
|
|
DmitryShm писал(а): | а по-моему разумнее всего использовать средства операционки |
А я и использовал средства операционки... все это функции винды... _________________ Нет непокоримых вершин, есть ленивые покорители... |
|
Вернуться к началу |
|
|
|