#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

struct courseInfo {
  char dept[4] ;
  short number ;
  short section ;
  short limit ;
} ;

int main (int argv, char **argc) {
  struct courseInfo uncaCourse ;
  int coursePos ;
  FILE *inFile = fopen(argc[1], "r") ;
  if (inFile == NULL) {
    fprintf(stderr, "Unable to open %s: %s\n", argc[1], strerror(errno)) ;
    return 1 ;
  }
  if (sscanf(argc[2], "%d", &coursePos) != 1) {
    fprintf(stderr, "%s must be a number\n", argc[2]) ;
    return 1 ;
  }
  if (fseek(inFile, coursePos*sizeof(struct courseInfo), SEEK_SET)) {
    fprintf(stderr, "Cannot find record %d\n", coursePos) ;
    return 1 ;
  }
  if (fread((void *)&uncaCourse, sizeof(uncaCourse), 1, inFile) != 1) {
    fprintf(stderr, "Cannot read record %d\n", coursePos) ;
    return 1 ;
  }
  printf("%-4.4s %3d.%03d %5d\n",
	 uncaCourse.dept,
	 uncaCourse.number,
	 uncaCourse.section,
	 uncaCourse.limit) ;
  return 0 ;
}
