2013-10-07 3 views
0

Предисловие: Я упростил проблему в своих ключевых функциях, поэтому, если это звучит странно, это потому, что это небольшой аспект всей программы.Создание файла случайного размера [1 ... 500] KB

Проблема:

Я хочу создать что-то вроде 100 текстовых файлов: Я буду цикл и использовать мой счетчик цикла назвать файлы.

Затем я хочу заполнить каждый файл случайными строками. Для этого я использую мою String, определенную ниже. Я хочу заполнить файл с [1KB до 500KB].

struct String // And yes I am using my own String library. 
{ 
    char *c; 
    int length; 
    int maxLength; 
} 

Предположим, что у меня открыт файл (возможно, в данный момент я его создаю, поэтому он пуст). Теперь я проверил бы что-то вроде этого.

int range = Random.Range(0,500); 

Я бы получил номер, который предопределил бы размер файла. Так что если range == 100, тогда файл будет заполнен 100 КБ «данных».

Я бы сначала создал свою строку.

// Maybe making this 100 chars would help? 
String *s1 = makeString("abcdefghijklmnopqrstuvwxyz"); 

Как бы я выяснить, сколько раз я должен написать свою строку s1 в файл, чтобы сделать его размер range? Предпочтительно, прежде чем писать в файл, я бы не захотел писать сначала, а затем проверить, а затем написать еще раз.

И как бы получить случайное целочисленное значение в C? Я использовал Random.Range в C#.

+1

Вы имеете в виду предпочтительный размер файла, деленный на длину строки: 'range * 1000/s1-> length;'? – Kninnug

+1

Чтобы упростить задачу, убедитесь, что ваша строка имеет размер, разделяющий 1024, что представляет собой количество байтов в килобайте. Вам нужно написать строку '(range * 1024)/s1-> length' раз, чтобы получить желаемый размер файла. – naitoon

ответ

0

Чтобы это упростило, было бы лучше, если бы вы могли сделать свой размер строки общим знаменателем 1 килобайт (1024 байта). Поэтому вам не нужно заботиться о доле. После этого вы можете сделать это как @naitoon, упомянутое выше (диапазон * 1024)/s1-> length. Если каждый из символов вашей строки имеет длину 1 байт.

Что касается случайного числа, вы можете позвонить в стандартной библиотеке RAND(), которая возвращает целое число от 0 до RAND_MAX, которая, по меньшей мере, 32767

Кроме того, для того, чтобы сохранить случайное число с диапазоном (0 ~ 500), вы можете сделать модульное значение возвращаемого значения.

range = rand() % 500; 
Смежные вопросы