创建随机大小的文件[1 ... 500] KB

时间:2013-10-07 01:09:38

标签: c ubuntu

前言:我已将问题简化为其关键功能,所以如果听起来很奇怪,那是因为这是整个程序的一个小方面。

问题:

我想创建100个文本文件:我将循环并使用我的循环计数器来命名文件。

然后,我想用随机字符串填充每个文件。我使用下面定义的String struck。我希望从[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 个答案:

答案 0 :(得分:0)

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

对于随机整数,您可以调用标准库rand(),它返回0到RAND_MAX之间的整数,至少为32767.

另外,为了保持随机数与你的范围(0~500),你可以做一个模数的返回值。

    range = rand() % 500;