home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1992 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1992.iso
/
usenet
/
altsrcs
/
1
/
1500
/
riddle.c
< prev
Wrap
C/C++ Source or Header
|
1990-12-28
|
1KB
|
65 lines
#include <stdio.h>
#define QUEST_FILE "/home/rosemary/year2/nrp1/pub/questions"
#define ANS_FILE "/home/rosemary/year2/nrp1/pub/answers"
main(argc,argv)
int argc;
char **argv;
{
switch(argc) {
case 1: return(ask(QUEST_FILE, 0));
break;
case 2: if (!strcmp(argv[1], "-a")) {
fprintf(stderr, "No answer number!\n");
return(-1);
} else return(ask(QUEST_FILE, atoi(argv[1])));
break;
default: if (!strcmp(argv[1], "-a")) {
return(ask(ANS_FILE, atoi(argv[2])));
break;
} else return(ask(QUEST_FILE, atoi(argv[1])));
}
}
ask(file, q)
char *file;
int q;
{
int count = 0, numquest, num;
int blob;
FILE *InFile;
if (!(InFile = fopen(file, "r"))) {
fprintf(stderr, "Can't open %s\n", file);
exit(-1);
}
fscanf(InFile, "%d", &numquest); /* no. of questions */
if (q == 0) {
srandom(getpid());
num = random() % numquest + 1;
} else
num = q;
if ((num < 1) || (num > numquest)) {
fprintf(stderr, "Invalid question number\n");
exit(-1);
}
while (count < num)
if ((blob = getc(InFile)) == '~') count++ ;
else if (blob == EOF) {
fprintf(stderr, "File not in valid format\n");
exit(-1);
}
while (((blob = getc(InFile)) != '~') && (blob != EOF))
printf("%c", blob);
fclose(InFile);
return(num);
}