C 创建随机大小为[1…500]KB的文件
前言:我已经将这个问题简化为它的关键功能,所以如果它听起来很奇怪,那是因为这是整个程序的一个小方面 问题: 我想创建大约100个文本文件:我将循环并使用我的循环计数器来命名这些文件 然后,我想用随机字符串填充每个文件。为此,我使用下面定义的字符串。我想把这个文件从[1KB增加到500KB]C 创建随机大小为[1…500]KB的文件,c,ubuntu,C,Ubuntu,前言:我已经将这个问题简化为它的关键功能,所以如果它听起来很奇怪,那是因为这是整个程序的一个小方面 问题: 我想创建大约100个文本文件:我将循环并使用我的循环计数器来命名这些文件 然后,我想用随机字符串填充每个文件。为此,我使用下面定义的字符串。我想把这个文件从[1KB增加到500KB] struct String // And yes I am using my own String library. { char *c; int length; int maxLength
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
写入文件多少次才能使其达到范围的大小?最好在写入文件之前,我不想先写然后检查,然后再写
我如何得到C中的一个随机整数值?我习惯于使用C#中的Random.Range。为了保持简单,最好将字符串大小设置为1KB(1024字节)的公分母。所以你不必在意分数。
之后,您可以按照上面提到的@naitoon(范围*1024)/s1->length进行操作。如果字符串的每个字符都是1字节长
对于random integer,可以调用标准库rand(),该库返回0到rand_MAX之间的整数,该值至少为32767
此外,为了使随机数保持在您的范围(0~500)内,您可以对返回值进行模块化处理
range = rand() % 500;
您的意思是首选文件大小除以字符串长度:range*1000/s1->length代码>?为简化操作,请确保字符串的大小除以1024,即千字节中的字节数。您需要将字符串(范围*1024)/s1->length
写入几次,以获得所需的文件大小。