免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 625 | 回复: 2
打印 上一主题 下一主题

各位哥们帮个忙,谢过先 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-16 22:19 |只看该作者 |倒序浏览
此程序的目的是测试目标磁盘是否有足够的空间容纳待复制文件的小程序,需要输入待复制的文件和目标驱动器,程序运行后显示带复制文件需要空间和目标驱动器的剩余空间。

#include "conio.h"
#include "dir.h"
#include "dos.h"
#include "stdio.h"
#include "stdlib.h"

void main(int argc,char *argv[])
{
   struct ffblk dta;
   struct dfree disk;         /*这两个结构类型为什么可以这样定义呢?*/
  char pathname[30];
   void far *sys;            /*far是什么类型?为什么这样定义?*/
  int i,j,base,drive,right;
   long int freedisk,all_file_long=0,temp;
   if(argc != 3)
   {
       printf("\nNo PARAMETERS or TOO MANY";
       printf("\nlook source_subname[+subname...]drive";
       printf("\nExamples:";
       printf("\n%s C:\my\*.* *c:\tools\*.exe a:\n",argv[0]);
       return;
   }

   if(argv[2][0] >; 'a' && argv[2][0] < 'z')        /*argv这个字符传类型的数组是二维的吗?*/
   {
       drive = argv[2][0] - 'a';
    }
   else if(argv[2][0] >; 'A' && argv[2][0] <'Z')
    {
       drive = argv[2][0] - 'A';
    }
   else
    {
       printf("error!";
       return;
    }
   getdfree(drive,disk);
   base = disk.df_bsec*disk.df_sclus;
   freedisk = disk.df_avait;
   freedisk = freedisk*base;
   i = 0;
   while(i<strlen<argv[1])
   {
       for(j=0;(argv[1]&&(argv[1]!='+'));i++,j++)
           pathname[j] = argv[1];
       i++;
       pathname[j] = '\0';
       right = findfirst(pathname,&dta,0x16);
       while(!right)
       {
           if(dta.ff_fsize%base)
           {
                temp = dta.ff_fsize;
                all_file_long = all_file_long+(temp/base + 1)*base;
           }
           else
           {
                temp = dta.ff_fsize;
                all_file_long = all_file_long + temp;
           }
       }
       printf("\nNeed total space:";
       printf("%12ld Bytes",all_file_long);
       printf("\nThe disk left space:";
       printf("%12ld Bytes",freedisk);
       if(all_file_long <= freedisk)
           printf("\n\n******The space is enough******";
       else
       printf("\n\n******Nosuch space to copy these files******";
}

论坛徽章:
0
2 [报告]
发表于 2004-11-17 12:01 |只看该作者

各位哥们帮个忙,谢过先

谁能帮忙下啊

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-11-17 12:30 |只看该作者

各位哥们帮个忙,谢过先

1、那个结构体当然要那样定义,要不你说咋定义?
2、far是指远指针,同时存放段地址和偏移地址的。用在dos下实模式编程时的。
3、当然时二维数组,详细看关于main函数参数的解释。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP