17 #include <sys/types.h>
21 #define MAX_NUMS ((INT_MAX >> 5) + 1)
31 int main(
int argc,
char** argv)
33 const char* usage =
"usage: %s filename\n";
37 static unsigned int have_num[
MAX_NUMS];
46 assert(
sizeof(
int) == 4);
52 fprintf(stderr, usage, argv[0]);
55 memset(have_num, 0,
sizeof(have_num));
59 if (0 > (fd = open(argv[1], O_RDONLY)))
71 if (MAP_FAILED == (map = mmap(0, stat.st_size, PROT_READ, MAP_SHARED, fd, 0)))
80 total_nums = stat.st_size /
sizeof(int);
82 for(
int i = 0; i < total_nums; i++)
88 int idx = map[i] >> 5;
89 unsigned int msk = 1 << (map[i] & 31);
97 if (munmap(map, stat.st_size))
108 fprintf(stderr,
"Total numbers read = %d\n", total_nums);
112 for(
int k = 0; k < 31; k++)
113 if (have_num[i] & (1 << k))
114 printf(
"%d\n", (i << 5) + k);
#define MAX_NUMS
Maximum number of 32 bit ints we need to store bits.
int main(int argc, char **argv)
Program to read a file with binary positive 32 bit integers, sort the numbers and print them sorted...