创建缓冲区并用随机数填充它

时间:2014-05-13 12:37:42

标签: c random buffer

我想创建一个缓冲区,然后在其中写入随机数据。

这是我到目前为止所得到的

uint8_t size = 10;
int* buffer = malloc (size*sizeof(uint8_t));
int i;
for (i=0; i<size; i++)
{
buffer[i]=(rand()%100)+1;
}
printf("Content of buffer = %d\n", buffer);

结果是wandom yes但只有8个而不是10个。

我想获得一个包含大小和随机数内容的缓冲区。

提前致谢

2 个答案:

答案 0 :(得分:1)

你需要

malloc (size*sizeof(int))

而不是

malloc (size*sizeof(uint8_t))

或者你需要

uint8_t* buffer = malloc (size*sizeof(uint8_t));

这取决于您是否需要10 int缓冲区的10 uint8_t缓冲区。

要打印缓冲区的内容,请使用:

for (i = 0; i < size; i++)
{
  printf("%d\n", buffer[i]) ;
}

以下行仅打印缓冲区的地址

printf("Content of buffer = %d\n", buffer);

答案 1 :(得分:0)

如果您想为任意大小的缓冲区分配随机数据,则可能希望在当前时间播种随机数生成器,然后重复调用random()

#include <ctime>
#include <stdlib.h>

char *allocate_random_heap_buffer(size_t size) {
    time_t current_time = time(nullptr);
    srandom((unsigned int) current_time);
    char* allocatedMemory = (char *) malloc(size);

    for(int bufferIndex = 0; bufferIndex < size; bufferIndex++) {
        char randomNumber = (char) random();
        allocatedMemory[bufferIndex] = randomNumber;
    }

    return allocatedMemory;
}