1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4 
5 //#define RANDOM(K) 1+(long)(K*rand()/(RAND_MAX+1.0));
6 #define RANDOM(K) 1+(random()%K);
7 
main(int argc,char * argv[])8 int main(int argc, char *argv[]) {
9 	FILE *fd;
10 	long posa = 0, posb = 0;
11 	long seed = 0;
12 	int valuea = 0, valueb = 0;
13 	long size;
14 	int b = 0;
15 
16 	// Inits the rng
17 	if (argv[2])
18 		b = sscanf(argv[2], "%lu", &seed);
19 	if (b == 1)
20 		srandom(seed);
21 	else
22 		srandom((long)time(0));
23 
24 	fd = fopen(argv[1], "r+");
25 	fseek(fd, 0, SEEK_END);
26 	size = ftell(fd);
27 	// GETS
28 	while (valuea == valueb) {
29 		posa = RANDOM(size);
30 		posb = RANDOM(size);
31 		fseek(fd, posa, SEEK_SET);
32 		valuea = fgetc(fd);
33 		fseek(fd, posb, SEEK_SET);
34 		valueb = fgetc(fd);
35 	}
36 	// PUTS
37 	fseek(fd, posa, SEEK_SET);
38 	fputc(valueb, fd);
39 	fseek(fd, posb, SEEK_SET);
40 	fputc(valuea, fd);
41 	fclose(fd);
42 	printf("%lu\n", random());
43 	//printf("Pos: %u\tValue: %u\n", pos, value);
44 }
45