资源简介
下载后需要改动一下数据,才能运行
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
int main(){
////第一种获取文件目录项
struct _finddata_t f;;
int ok;
char filename[20];
printf(“请输入E盘的一个文件名(类似E:\\\\1.txt)\n“);
scanf(“%s“filename);
ok=_findfirst(filename&f);
printf(“文件的名字为:%s\n“f.name);
printf(“文件的字节数:%d\n“f.size);
//创建时间
struct tm *cp;
cp=gmtime(&f.time_create);
printf(“文件创建时间为:%d年%02d月%02d日\n“(1900+cp->tm_year) (1+cp->tm_mon)cp->tm_mday);
//上一次访问时间
struct tm *fp;
fp=gmtime(&f.time_access);
printf(“文件上一次访问时间为:%d年%02d月%02d日\n“(1900+fp->tm_year) (1+fp->tm_mon)fp->tm_mday);
//上一次修改时间
struct tm *wp;
wp=gmtime(&f.time_write);
printf(“文件上一次修改时间为:%d年%02d月%02d日\n“(1900+wp->tm_year) (1+wp->tm_mon)wp->tm_mday);
//打开磁盘的0扇区
HANDLE hDev;
hDev=CreateFile(“\\\\.\\E:“GENERIC_READFILE_SHARE_WRITE|FILE_SHARE_READ0OPEN_EXISTING00);
//如果读取磁盘失败
if (hDev == INVALID_HANDLE_VALUE)
{
printf(“CreatFile Error\n“);
DWORD ret = GetLastError();
printf(“error%x\n“ret);
}
//设置到MFT的第一个簇,得到 关于MFT表项的自己属性和分块
LARGE_INTEGER locate3;
locate3.QuadPart=((DWORD64)6291456*512);
BOOL o3=SetFilePointerEx(hDevlocate30FILE_BEGIN);
if(o3==0)
{
printf(“指针设置失败\n“);
}
unsigned char Buffer3[1024] = {0};
DWORD dwRet3 = 0; //系统将成功读取的字节数放在里面
ReadFile(hDevBuffer31024&dwRet30);
//如果读取文件失败
if (dwRet3 < 0)
{
printf(“ReadFile Error\n“);
DWORD ret = GetLastError();
printf(“error%x\n“ret);
}
int local2;
for(int i=0; i< 1024; i++)
{
if(Buffer3[i]==128 && Buffer3[i+4]==88)
{
local2=i;
}
}
local2=local2+64;//定位到第一个rundate处
//计算MFT的数据流
DWORD mftz[10]; DWORD mfts[10];
int y=0;
while(Buffer3[local2]!=0){
unsigned char mft[24];
for(int i=0;i<24;i++)
{
mft[i]=Buffer3[i+local2];
}
int rundate3=(Buffer3[local2]&0xf0)>>4;//高位 几个字节表示簇号
int rundate4=(Buffer3[local2]&0x0f); //低位
//存放rundate的大小
unsigned char mftsize[8];
for(int k=0;k mftsize[k]=Buffer3[local2+rundate4-k];
}
for(int k=0;k
int gaowei=(mftsize[k]&0xf0)>>4;
int diwei=mftsize[k]&0x0f;
mfts[y]= mfts[y]+gaowei*pow(16(rundate4-k)*2-1)+diwei*pow(16(rundate4-k)*2-2);
}
local2=local2+rundate4;
unsigned char mftdate1[8];//存放run date 的 簇号
for(int k=0;k
mftdate1[k]=Buffer3[local2+rundate3-k];
}
for(int k=0;k
int gaowei=(mftdate1[k]&0xf0)>>4;
int diwei=mftdate1[k]&0x0f;
mftz[y]= mftz[y]+gaowei*pow(16(rundate3-k)*2-1)+diwei*pow(16(rundate3-k)*2-2);
}
local2=local2+runda
- 上一篇:哈弗曼编码的实验报告
- 下一篇:基于C++和MFC的哈夫曼编码压缩软件的实现
相关资源
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论