⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch12-devrandom.c

📁 linux编程精髓 源代码
💻 C
字号:
/* ch12-devrandom.c --- generate die rolls, using /dev/urandom. */#include <stdio.h>#include <fcntl.h>#include <stdlib.h>char *die_faces[] = {	/* ASCII graphics rule! */	"       ",	"   *   ",	/* 1 */	"       ",	"       ",	" *   * ",	/* 2 */	"       ",	"       ",	" * * * ",	/* 3 */	"       ",	" *   * ",	"       ",	/* 4 */	" *   * ",	" *   * ",	"   *   ",	/* 5 */	" *   * ",	" * * * ",	"       ",	/* 6 */	" * * * ",};/* myrandom --- return data from /dev/urandom as unsigned long */unsigned long myrandom(void){	static int fd = -1;	unsigned long data;	if (fd == -1)		fd = open("/dev/urandom", O_RDONLY);	if (fd == -1 || read(fd, & data, sizeof data) <= 0)		return random();	/* fall back */	return data;}/* main --- print N different die faces */int main(int argc, char **argv){	int nfaces;	int i, j, k;	if (argc != 2) {		fprintf(stderr, "usage: %s number-die-faces\n", argv[0]);		exit(1);	}	nfaces = atoi(argv[1]);	if (nfaces <= 0) {		fprintf(stderr, "usage: %s number-die-faces\n", argv[0]);		fprintf(stderr, "\tUse a positive number!\n");		exit(1);	}	for (i = 1; i <= nfaces; i++) {		j = myrandom() % 6;		/* force to range 0 <= j <= 5 */		printf("+-------+\n");		for (k = 0; k < 3; k++)			printf("|%s|\n", die_faces[(j * 3) + k]);		printf("+-------+\n");		putchar('\n');	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -