home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 049.lha / joke.c < prev    next >
C/C++ Source or Header  |  1986-11-20  |  2KB  |  83 lines

  1. /************************* Main *********************/
  2. /*                                                  */
  3. /*  Joke: a random Joke selector                   */
  4. /*                                                  */
  5. /****************************************************/
  6. #include <stdio.h>
  7. extern int rand(),srand();
  8. extern long time();
  9. FILE *jokefile;
  10. char buf[80],name[80];
  11. short num,line;
  12. #define ABS(x) ((x)>0?(x):(-(x)))
  13.  
  14. main(argc,argv)
  15. int argc;
  16. char *argv[];
  17. {
  18.    char *src;
  19.  
  20.    src = argv[1];
  21.    if(src[0]=='?'||(argc!=2&&argc!=3))
  22.    {
  23. help:
  24.       printf("\f"); /* clear screen (clear) */
  25.       center(1,"                                 ");
  26.       center(2,"      J O K E  O F  T H E  D A Y ");
  27.       center(3,"                                 ");
  28.       center(5,"Written by");
  29.       center(7,"Charles Jeffery Carter");
  30.       center(8,"4601 Wilshire Cove    ");
  31.       center(9,"Huntsville, Ala. 35816");
  32.       center(11,"This software may be freely distributed");
  33.       center(12,"If you like this program, Let me know! ");
  34.       center(14,"Joke is used to help select a random joke for the day!");
  35.       center(16,"Usage--> Joke Type [Number]");
  36.       center(18,"Types avaliable are in current directory as Type.Joke ");
  37.       center(19,"File format is number of records followed by records. ");
  38.       center(20,"Each record ends with a '/' in the first column. ;8^) ");
  39.       center(22,"      Press Return to Continue ");
  40.       getchar();
  41.       printf("\f"); /* reset screen (clear) */
  42.       exit(0);
  43.    }
  44.    strcpy(name,src);
  45.    strcat(name,".Joke");
  46.    jokefile=fopen(name,"r");
  47.    if (jokefile==NULL)
  48.    {
  49.       printf("File %s not found! Hit Return\n",name);
  50.       getchar();
  51.       goto help;
  52.    }
  53.    fgets(buf,80,jokefile);
  54.    num=atoi(buf);
  55.    if(num==0)
  56.    {
  57.       printf("Invalid number [%s] in file %s\n",buf,name);
  58.       fclose(jokefile);
  59.       goto help;
  60.    }
  61.    srand((short)time(0L));
  62.    if(argc==3) line=atoi(argv[2])-1;
  63.    else line=rand();
  64.    line=ABS(line);
  65.    line%=num;
  66.    printf("Number %d in %s\n",line+1,name);
  67.    while(line && fgets(buf,80,jokefile)) if (buf[0]=='/') --line;
  68.    while(fgets(buf,80,jokefile) && buf[0]!='/') printf(buf);
  69.    fclose(jokefile);
  70. }
  71.  
  72.  
  73. /************************* center ***********************/
  74. center(row,string)
  75. int row;
  76. char *string;
  77. /* printf the string centered on given row */
  78. {
  79. int col;
  80.    col = (76-strlen(string))/2;
  81.    printf("%d;%dH%s",row,col,string);
  82. }
  83.