- 论坛徽章:
- 0
|
此程序的目的是测试目标磁盘是否有足够的空间容纳待复制文件的小程序,需要输入待复制的文件和目标驱动器,程序运行后显示带复制文件需要空间和目标驱动器的剩余空间。
#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******"
} |
|