В ubuntu программа использует
FILE *randomSource = fopen("/dev/urandom", "rb");
int byteCount = fread(buf, sizeof(unsigned char), num, randomSource);
И я хотел бы заменить это на rand () из stdlib, потому что мне нужно использовать его в среде, где нет / dev / urandom. Я пробовал вот так:
buf = malloc (num);
int i;
for (i = 0; i < num; i++)
{
buf[i] = rand ();
}
Но, видимо, это не эквивалентно, потому что программа не работает. В результате должно получиться n случайных байтов, при этом buf указывает на первый.
Я тоже пробовал, но все равно не удалось.
randomBytes(unsigned char *buf, const int num)
{
buf = malloc (num * sizeof *buf);
int i;
for (i = 0; i < num; i++)
{
buf[i] = rand ();
}
return 0;
}
Исходная функция, которую я пытаюсь заменить:
randomBytes(unsigned char *buf, const int num)
{
FILE *randomSource = fopen("/dev/urandom", "rb");
if (!randomSource)
{
return -1;
}
int byteCount = fread(buf, sizeof(unsigned char), num, randomSource);
if (byteCount < num)
{
return -1;
}
fclose(randomSource);
return 0;
}