home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 293_02 / fliphpp.c < prev    next >
C/C++ Source or Header  |  1989-08-25  |  3KB  |  124 lines

  1. /*********************** fliphpp.c ***************************
  2.  
  3. flip an image
  4.  
  5. Daniel Geist
  6. Michael Vannier
  7.  
  8. Mallinckrodt Institute of Radiology
  9. Washington University School of Medicine
  10. 510 S. Kingshighway Blvd.
  11. St. Louis, Mo. 63110
  12.  
  13. ************************************************************/
  14.  
  15. #include <stdio.h>
  16. #include <ctype.h>
  17.  
  18. unsigned char inbuf[256],fnamein[30],fnameout[30];
  19.  
  20. main(argc,argv)
  21.  
  22. int argc;
  23. char *argv[];
  24.  
  25. {
  26.     int i,j,lines;
  27.     FILE *fin,*fout;
  28.  
  29.     switch (argc)
  30.     {
  31.     case 1:
  32.         printf(" Enter fin: ");
  33.         scanf("%s",fnamein);
  34.         printf("Enter fout: ");
  35.         scanf("%s",fnameout);
  36.         printf("Enter lines: ");
  37.         scanf("%d",&lines);
  38.         break;
  39.  
  40.     case 2:
  41.         if(isalpha(argv[1][0])){
  42.             strcpy(fnamein,argv[1]);
  43.             printf("Enter lines: ");
  44.             scanf("%d",&lines);
  45.             change_ext(fnamein,fnameout);
  46.         }
  47.         else{
  48.             get_lines_arg(argv[1],&lines);
  49.             printf(" Enter fin: ");
  50.             scanf("%s",fnamein);
  51.             printf("Enter fout: ");
  52.             scanf("%s",fnameout);
  53.         }
  54.         break;
  55.  
  56.     case 3:
  57.         strcpy(fnamein,argv[1]);
  58.         if(isalpha(argv[2][0])){
  59.             strcpy(fnameout,argv[2]);
  60.             printf("Enter lines: ");
  61.             scanf("%d",&lines);
  62.         }
  63.         else{
  64.             get_lines_arg(argv[2],&lines);
  65.             change_ext(fnamein,fnameout);
  66.         }
  67.         break;
  68.     default:
  69.         strcpy(fnamein,argv[1]);
  70.         strcpy(fnameout,argv[2]);
  71.         get_lines_arg(argv[3],&lines);
  72.     } 
  73.     fin=fopen(fnamein,"rb");
  74.     fout=fopen(fnameout,"wb");
  75.     for(i=lines-1;i>=0;i--){
  76.         fseek(fin,(long)i*256,SEEK_SET);
  77.         fread(inbuf,1,256,fin);
  78.         fwrite(inbuf,1,256,fout);
  79.     }
  80.     fclose(fin);
  81.     fclose(fout);
  82. }
  83.  
  84. get_lines_arg(s,n)
  85. char s[];
  86. int *n;
  87.     FILE *f;
  88.     char c;
  89.  
  90.     if(s[0]=='/') switch(s[1]){
  91.     case 'd':
  92.     case 'D':
  93.         *n=256;
  94.         break;
  95.     case 'p':
  96.     case 'P':
  97.         f=fopen("param.dat","rb");
  98.         fscanf(f,"%c %d",&c,n);
  99.         break;
  100.     default :
  101.         error_exit();
  102.     }
  103.     else if( s[0] >='0' && s[0] <= '9') sscanf(s,"%d",n);
  104.     else error_exit();
  105. }
  106.  
  107. error_exit()
  108. {
  109.     printf("bad parameters\n");
  110.     exit();
  111. }
  112.  
  113. change_ext(s1,s2)
  114. char *s1,*s2;
  115.     int i;
  116.     do{
  117.         *(s2++)=*(s1++);
  118.     }
  119.     while(*(s2-1)!='.');
  120.     strcpy(s2,"flp");
  121. }
  122.