我想创建一个缓冲区,然后在其中写入随机数据。
这是我到目前为止所得到的
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个。
我想获得一个包含大小和随机数内容的缓冲区。
提前致谢
答案 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;
}