
windows API编写的提取文件属性的程序
RT我是用VC++6.0的编译环境,建的是win32consoleapplication,请大侠帮忙看看下面代码有什么问题~这程序急呀……分不够再加……#include<...
RT
我是用VC++6.0的编译环境,建的是win32 console application,请大侠帮忙看看下面代码有什么问题~
这程序急呀……分不够再加……
#include <stdafx.h>
#include <string.h>
#include <windows.h>
DWORD ShowFileTime(PFILETIME lptime)
{
//文件时间结构
FILETIME ftLocal;
//系统时间结构
SYSTEMTIME st;
//调整为系统所在时区的时间
FileTimeToLocalFileTime(lptime,&ftLocal);
//将文件时间转换为SYSTEMTIME格式,便于显示
FileTimeToSystemTime(&ftLocal,&st);
//显示时间信息字符串
printf("%4d年%#02d月%#02d日,%#02d:%#02d:%#02d\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
return 0;
}
DWORD ShowFileSize(DWORD dwFileSizeHigh,DWORD dwFileSizeLow)
{
ULONGLONG liFileSize;
liFileSize = dwFileSizeHigh;
//移动到32位
liFileSize <<= sizeof(DWORD)*8;
liFileSize += dwFileSizeLow;
printf("w文件大小:\t%I64u 字节\n",liFileSize);
return 0;
}
DWORD ShowFileAttrInfo(DWORD dwAttribute)
{
//依次判断属性,并显示
printf("文件属性:\t");
if(dwAttribute&FILE_ATTRIBUTE_ARCHIVE)
printf("<ARCHIVE>");
if(dwAttribute&FILE_ATTRIBUTE_COMPRESSED)
printf("<压缩>");
if(dwAttribute&FILE_ATTRIBUTE_DIRECTORY)
printf("<目录>");
if(dwAttribute&FILE_ATTRIBUTE_ENCRYPTED)
printf("<加密>");
if(dwAttribute&FILE_ATTRIBUTE_HIDDEN)
printf("<隐藏>");
if(dwAttribute&FILE_ATTRIBUTE_NORMAL)
printf("<NORMAL>");
if(dwAttribute&FILE_ATTRIBUTE_OFFLINE)
printf("<OFFLINE>");
if(dwAttribute&FILE_ATTRIBUTE_READONLY)
printf("<只读>");
if(dwAttribute&FILE_ATTRIBUTE_SPARSE_FILE)
printf("<SPARSE>");
if(dwAttribute&FILE_ATTRIBUTE_SYSTEM)
printf("<系统文件>");
if(dwAttribute&FILE_ATTRIBUTE_TEMPORARY)
printf("<临时文件>");
printf("\n");
return 0;
}
DWORD ShowFileAttributes(LPSTR szPath)
{
//文件属性结构
WIN32_FILE_ATTRIBUTE_DATA wfad;
printf("文件:%s\n",szPath);
//获取文件属性
if(!GetFileAttributesEx(szPath,GetFileExInfoStandard,&wfad))
{
printf("获取文件属性错误:%d\n",GetLastError());
return 1;
}
//显示相关时间
printf("创建时间:\t");
ShowFileTime(&(wfad.ftCreationTime));
printf("最后访问时间:\t");
ShowFileTime(&(wfad.ftLastAccessTime));
printf("最后修改时间:\t");
ShowFileTime(&(wfad.ftLastWriteTime));
//显示文件大小
ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);
//显示文件属性
ShowFileAttrInfo(wfad.dwFileAttributes);
return 0;
}
int main(PCHAR argv[])
{
printf("请输入文件路径\n");
scanf("%s",argv);
ShowFileAttributes(argv[0]);
printf("显示参数指定文件的属性、时间、大小;\n");
return 0;
}
这个程序运行后就显示一行“请输入文件路径”,然后输了一个路径按了enter以后程序就瘫了………… 展开
我是用VC++6.0的编译环境,建的是win32 console application,请大侠帮忙看看下面代码有什么问题~
这程序急呀……分不够再加……
#include <stdafx.h>
#include <string.h>
#include <windows.h>
DWORD ShowFileTime(PFILETIME lptime)
{
//文件时间结构
FILETIME ftLocal;
//系统时间结构
SYSTEMTIME st;
//调整为系统所在时区的时间
FileTimeToLocalFileTime(lptime,&ftLocal);
//将文件时间转换为SYSTEMTIME格式,便于显示
FileTimeToSystemTime(&ftLocal,&st);
//显示时间信息字符串
printf("%4d年%#02d月%#02d日,%#02d:%#02d:%#02d\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
return 0;
}
DWORD ShowFileSize(DWORD dwFileSizeHigh,DWORD dwFileSizeLow)
{
ULONGLONG liFileSize;
liFileSize = dwFileSizeHigh;
//移动到32位
liFileSize <<= sizeof(DWORD)*8;
liFileSize += dwFileSizeLow;
printf("w文件大小:\t%I64u 字节\n",liFileSize);
return 0;
}
DWORD ShowFileAttrInfo(DWORD dwAttribute)
{
//依次判断属性,并显示
printf("文件属性:\t");
if(dwAttribute&FILE_ATTRIBUTE_ARCHIVE)
printf("<ARCHIVE>");
if(dwAttribute&FILE_ATTRIBUTE_COMPRESSED)
printf("<压缩>");
if(dwAttribute&FILE_ATTRIBUTE_DIRECTORY)
printf("<目录>");
if(dwAttribute&FILE_ATTRIBUTE_ENCRYPTED)
printf("<加密>");
if(dwAttribute&FILE_ATTRIBUTE_HIDDEN)
printf("<隐藏>");
if(dwAttribute&FILE_ATTRIBUTE_NORMAL)
printf("<NORMAL>");
if(dwAttribute&FILE_ATTRIBUTE_OFFLINE)
printf("<OFFLINE>");
if(dwAttribute&FILE_ATTRIBUTE_READONLY)
printf("<只读>");
if(dwAttribute&FILE_ATTRIBUTE_SPARSE_FILE)
printf("<SPARSE>");
if(dwAttribute&FILE_ATTRIBUTE_SYSTEM)
printf("<系统文件>");
if(dwAttribute&FILE_ATTRIBUTE_TEMPORARY)
printf("<临时文件>");
printf("\n");
return 0;
}
DWORD ShowFileAttributes(LPSTR szPath)
{
//文件属性结构
WIN32_FILE_ATTRIBUTE_DATA wfad;
printf("文件:%s\n",szPath);
//获取文件属性
if(!GetFileAttributesEx(szPath,GetFileExInfoStandard,&wfad))
{
printf("获取文件属性错误:%d\n",GetLastError());
return 1;
}
//显示相关时间
printf("创建时间:\t");
ShowFileTime(&(wfad.ftCreationTime));
printf("最后访问时间:\t");
ShowFileTime(&(wfad.ftLastAccessTime));
printf("最后修改时间:\t");
ShowFileTime(&(wfad.ftLastWriteTime));
//显示文件大小
ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);
//显示文件属性
ShowFileAttrInfo(wfad.dwFileAttributes);
return 0;
}
int main(PCHAR argv[])
{
printf("请输入文件路径\n");
scanf("%s",argv);
ShowFileAttributes(argv[0]);
printf("显示参数指定文件的属性、时间、大小;\n");
return 0;
}
这个程序运行后就显示一行“请输入文件路径”,然后输了一个路径按了enter以后程序就瘫了………… 展开
展开全部
把主函数改一下:
int main()
{
char szfile[MAX_PATH];
printf("请输入文件路径\n");
scanf("%s",szfile);
ShowFileAttributes(szfile);
printf("显示参数指定文件的属性、时间、大小;\n");
return 0;
}
你得定义一个变量存放地址字符串啊,要么你就在CMD中传递文件地址过来,直接运行输入地址的话都没有缓冲区,它把你的地址串要往哪存啊,所以才会崩溃
int main()
{
char szfile[MAX_PATH];
printf("请输入文件路径\n");
scanf("%s",szfile);
ShowFileAttributes(szfile);
printf("显示参数指定文件的属性、时间、大小;\n");
return 0;
}
你得定义一个变量存放地址字符串啊,要么你就在CMD中传递文件地址过来,直接运行输入地址的话都没有缓冲区,它把你的地址串要往哪存啊,所以才会崩溃
追问
改过后就正常运行了,十分感谢!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询