resize.c
上传用户:minyiyu
上传日期:2018-12-24
资源大小:864k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. FILE *inf, *outf;
  5. char *inf_name, *outf_name;
  6. int inf_size, outf_size, t;
  7. char buf[ 0x10000 ];
  8. int fsize( char *path )
  9. {
  10.      struct stat buf;
  11.      if (stat( path, &buf )) {
  12.          return 0;
  13.      } else { 
  14.          return buf.st_size;
  15.      }
  16. }
  17. main(int argc, char *argv[])
  18. {
  19.     int len, record_num = 0;
  20.     if (argc != 5) {
  21.         printf("%s old_file old_size new_file new_sizen", argv[ 0 ] );
  22.         exit( 0 );
  23.     }
  24.     inf_name = argv[ 1 ];
  25.     inf_size = atoi( argv[ 2 ] );
  26.     outf_name = argv[ 3 ];
  27.     outf_size = atoi( argv[ 4 ] );
  28.     inf = fopen( inf_name, "r" );
  29.     outf = fopen( outf_name, "w" );
  30.     if ( inf == NULL || outf == NULL ) {
  31.         printf("Error open file n");
  32.         exit( 0 );
  33.     }
  34.     t = fsize( inf_name );
  35.     printf("Old file: %s  %d = %d x %d + %d n", 
  36.         inf_name, t, inf_size, t / inf_size, t % inf_size);
  37.     printf("New file: %s  %d = %d x %d + %d n", 
  38.         outf_name, 0, outf_size, 0, 0);
  39.     if ( t % inf_size ) {
  40.         char ans[ 80 ];
  41.         printf("Cannot match alignment, continue? ");
  42.         gets( ans );
  43.         if (!( ans[ 0 ] == 'Y' || ans[ 0 ] == 'y' )) exit( 0 ); 
  44.     }
  45.     memset( buf, 0, outf_size );
  46.     while ( (len = fread( buf, 1, inf_size, inf )) == inf_size ) {
  47.         record_num++;
  48.         fwrite( buf, 1, outf_size, outf );
  49.     }
  50.     fclose( inf );
  51.     fclose( outf );
  52.     printf("After resize:n");
  53.     printf("len = %d, record_num = %dn", len, record_num );
  54.     t = fsize( inf_name );
  55.     printf("Old: %s, %d x %d = %d (%d) %sn", 
  56.         inf_name, record_num, inf_size, inf_size * record_num,
  57.         t, t == inf_size * record_num ? "OK" : "Error");
  58.     t = fsize( outf_name );
  59.     printf("New: %s, %d x %d = %d (%d) %sn", 
  60.         outf_name, record_num, outf_size, outf_size * record_num,
  61.         t, t == outf_size * record_num ? "OK" : "Error");
  62. }