我正在尝试从/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
之后的内容将被截断吗? >
感谢您的帮助。
答案 0 :(得分:2)
没有必要将其加载到字符串中,我认为您想在这里读取/dev/urandom
产生的随机int,因此类似这样的方法应该起作用:
int randomvalue;
FILE *fpointer;
fpointer = fopen("/dev/urandom", "rb");
fread(&randomvalue,sizeof(int),1,fpointer);
fclose(fpointer);