将/ dev / urandom读入C字符串缓冲区

时间:2018-11-22 19:11:33

标签: c string

我正在尝试从/dev/urandom到C中的字符串缓冲区中读取固定长度的内容。但是,每次调用程序时,读取的字节数都不相同。以下是我的代码段

char * buff = malloc(sizeof(char)*2048);
int fd = open("/dev/urandom", O_RDONLY);
read(fd, buff, 2048);
printf("%lu \n", strlen(buff)); // length varies but usually not 2048
printf("%s \n",  buff);

是否会发生此行为,因为字符串\0以C终止,所以假设前2048个字符中有\0,第一个\0之后的内容将被截断吗? >

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

没有必要将其加载到字符串中,我认为您想在这里读取/dev/urandom产生的随机int,因此类似这样的方法应该起作用:

  int randomvalue;
  FILE *fpointer;
  fpointer = fopen("/dev/urandom", "rb");
  fread(&randomvalue,sizeof(int),1,fpointer);  
  fclose(fpointer);