Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 创建随机大小为[1…500]KB的文件_C_Ubuntu - Fatal编程技术网

C 创建随机大小为[1…500]KB的文件

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

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

问题:

我想创建大约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
写入文件多少次才能使其达到
范围的大小?最好在写入文件之前,我不想先写然后检查,然后再写


我如何得到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
写入几次,以获得所需的文件大小。