home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1479 / riddle.c < prev   
Encoding:
C/C++ Source or Header  |  1990-12-28  |  1.1 KB  |  61 lines

  1. #include <stdio.h>
  2. #define QUEST_FILE "/home/rosemary/year2/nrp1/pub/questions"
  3. #define ANS_FILE "/home/rosemary/year2/nrp1/pub/answers"
  4.  
  5. main(argc,argv)
  6. int argc;
  7. char **argv;
  8. {
  9.     switch(argc) {
  10.         case 1: return(ask(QUEST_FILE, 0));
  11.             break;
  12.         case 2: if (!strcmp(argv[1], "-a")) {
  13.                 fprintf(stderr, "No answer number!\n");
  14.                 return(-1);
  15.             } else return(ask(QUEST_FILE, atoi(argv[1])));
  16.             break;
  17.         default: if (!strcmp(argv[1], "-a")) {
  18.                 return(ask(ANS_FILE, atoi(argv[2])));
  19.                 break;
  20.             } else return(ask(QUEST_FILE, atoi(argv[1])));
  21.     }
  22. }
  23.  
  24. ask(file, q)
  25. char *file;
  26. int q;
  27. {
  28.  
  29.     int count = 0, numquest, num;
  30.     int blob;
  31.     FILE *InFile;
  32.  
  33.     if (!(InFile = fopen(file, "r"))) {
  34.         fprintf(stderr, "Can't open %s\n", file);
  35.         exit(-1);
  36.     }
  37.  
  38.     fscanf(InFile, "%d", &numquest);        /* no. of questions */
  39.  
  40.     if (q == 0) {
  41.         srandom(getpid());
  42.         num = random() % numquest + 1;
  43.     } else
  44.         num = q;
  45.  
  46.     if ((num < 1) || (num > numquest)) {
  47.         fprintf(stderr, "Invalid question number\n");
  48.         exit(-1);
  49.     }
  50.  
  51.     while (count < num) 
  52.         if (getc(InFile) == 1) count++ ;
  53.  
  54.     while (((blob = getc(InFile)) != 1) && (blob != EOF))
  55.         printf("%c", blob);
  56.  
  57.     fclose(InFile);
  58.  
  59.     return(num);
  60. }
  61.