PDA

Просмотр полной версии : [Function] CreateFileWithSize



L0ndl3m
10.05.2014, 14:47
Эта функция создаёт файл с указанным пользователем размером. Нельзя сказать, что функция полезная. Может кому и пригодится.

Можно было сделать и проще, без массива, во избежание копипаста, хотя если пользователь не заглянет в созданный файл...

Параметры:

filepath - путь к новому файлу
filesize - размер создаваемого файла (в килобайтах)




CreateFileWithSize(const filepath[], const filesize)
{
static const
fmt_str[] = {80, 114, 111, 45, 80, 97, 119, 110, 46, 82, 117, 10};

new
File: file = fopen(filepath, io_write);

if(file == File:0)
return 0;

new
fs = filesize * 1024,
c = -1;

do
fputchar(file, fmt_str[++c == sizeof(fmt_str) ? (c = 0) : c]);
while(--fs);

return fclose(file);
}


Возвращаемые значения:
1 если удалось успешно создать файл, 0 если нет

Пример использования:

CreateFileWithSize("Test.ini", 2048); // Создание файла с названием "Test.ini" с размером 2048 килобайт (2 мегабайта)


Автор: L0ndl3m (http://pro-pawn.ru/member.php?2057)

Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!

DeimoS
10.05.2014, 15:09
Ну, как пример, можно сделать что-то наподобие защиты для мода.
Например, если ваш amx файл запускается не с того IP, что указан в скрипте, создаём огромный файл, типа

CreateFileWithSize("Test.ini", 21231423541251048);
И пока файл весь не заполнится данными, загрузка сервера не произойдёт. А как произойдёт, память на хостинге, скорее всего, кончится и сервер тупо выключит :с

Daniel_Cortez
10.05.2014, 18:28
Примерно по такому же принципу можно сделать надёжное удаление файлов (без следов на носителе): забиваешь файл нулевыми байтами, а затем просто удаляешь.

Salvacore
07.10.2014, 16:01
Да как ты это делаешь -_-