Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Truncate файла


Автор: Unknown_Error 3.1.2005, 20:38
Hi everybody! smile
Народ такой вопрос. Как можно сделать Truncate файла?
Например последниз 3 байт?

Автор: azesmcar 4.1.2005, 10:35
Запихни все в память, потом снова запиши в файл но уже FileSize - 3

Примерно так..
Код

FILE *pFile = fopen("file.dat", "r");
char *pBuffer = new char[FILESIZE];
fread(pBuffer, 1, FILESIZE, pFile);
printf(pBuffer);
fclose(pFile);
pFile = fopen("file.dat", "w");
fwrite(pBuffer, 1, FILESIZE - 3, pFile);
fclose(pFile);
delete[] pBuffer;

Автор: Unknown_Error 4.1.2005, 16:11
2azesmcar, это не есть лучший способ!
А представляешь ежели файл 2 гиктара весит!

Лучше уж тогда сразу 2 файла открывать один на чтение другой на запись!
Но этот вариант мне не пойдет!

Автор: azesmcar 5.1.2005, 08:47
Ну раз с большими файлами дело имеешь тогда юзай _chsize
Код

#include <io.h>
#include <fcntl.h>
#include <stdio.h>

void main()
{
  int fh, result;
  if( (fh = _open( "file.dat", _O_RDWR )) != -1 )
  {
     if( (result = _chsize( fh, 7 )) == 0 )
     {
        printf( "File size changed\n" );
     }
     else
     {
        printf( "Cannot change file size\n" );
     }
     _close( fh );
  }
}

Добавлено @ 08:53
Вот только точно не знаю там эти функции есть или нет..
Если не будут попробуй без _

open, chsize, close и.т.д.

Автор: Unknown_Error 5.1.2005, 15:47
Угу! Точно оно!
10х!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)