2013-10-07 40 views
0

前言:我已将问题简化为其关键功能,所以如果听起来很奇怪,那是因为这是整个程序的一个小方面。创建一个随机大小的文件[1 ... 500] KB

问题:

我想创造一些像100个的文本文件:我会循环,用我的循环计数器来命名文件。

然后,我想用随机字符串填充每个文件。我用下面定义的字符串敲击这个。我想从[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那么该文件将填充100KB的“数据”。

我会先创建我的字符串。

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

我怎么会想出多少次,我有我的字符串s1写入到文件,以使其成为range的大小?最好在写入文件之前,我不想先写入然后再检查,然后重新写入。

而我将如何获得C中的随机整数值?我习惯了C#中的Random.Range。

+1

您的意思是preferred-file-size除以字符串长度:'range * 1000/s1-> length;'? – Kninnug

+1

为了简化问题,请确保您的字符串的大小为1024,这是千字节中的字节数。您需要编写字符串'((范围* 1024)/ s1->长度'以获得所需的文件大小。 – naitoon

回答

0

为了简单起见,如果可以将字符串大小作为1KB(1024字节)的公分母,那么最好。所以你不必小心小心。 之后,你可以做上面提到的@naitoon(范围* 1024)/ s1->长度。如果您的字符串的每个字符都是1个字节长。

至于随机整数,你可以调用标准库RAND()返回整数0至RAND_MAX,这是至少32767

而且,为了保持随机数与范围(0 〜500),你可以做一个模块化的返回值。

range = rand() % 500;