资源简介
下载后需要改动一下数据,才能运行
代码片段和文件信息
#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语言封装的HttpClient接口
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c语言文都讲义2020
- c语言课件56883
- C语言推箱子win控制台
- C语言程序设计50例.docx
- 烟花优化算法(c语言版)
- C语言程序设计教材习题参考答案.do
- 数据结构(C语言版)ppt课件,清华,
- c语言编程经典例题100例 word版
- C语言编译器的设计与实现.doc
- C语言基础教程.pdf56620
评论
共有 条评论