关于FindFirstFileEx中lpFileName参数的问题

Casimodo13 2006-05-27 03:44:27
下面是我的代码:

#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <stdio.h>

int main(void)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char str[]="1.txt";

printf ("Target file is %s.\n", str);
hFind = FindFirstFileEx(str, FindExInfoStandard, &FindFileData,
FindExSearchNameMatch, NULL, 0 );

if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle. GetLastError reports %d\n",
GetLastError ());
return (0);
}
else
{
printf ("The first file found is %s\n",
FindFileData.cFileName);
FindClose(hFind);
return (1);
}
}

编译无问题,且运行前我已经在d盘的某个目录下面建了一个1.txt,但运行结果总是:
Target file is 1.txt.
Invalid File Handle. GetLastError reports 2
Press any key to continue

用Look up查看:系统找不到指定的文件。
...全文
494 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Casimodo13 2006-07-27
  • 打赏
  • 举报
回复
不好意思,现在才来. 代码是早就写好的. 呵呵, 结贴了.

void FindAndChange(char *pDrive){
HANDLE hSearch;
WIN32_FIND_DATA FileData;
TCHAR szNewPath[MAX_PATH];
TCHAR *str[4];
int i;

str[0]=TEXT("\\rose.exe");str[1]=TEXT("\\systemfile.com");str[2]=TEXT("\\auto
run.inf");
str[0]=TEXT("\\system.sys");
for(i=0;i<=3;++i){
lstrcpy(szNewPath, pDrive);
lstrcat(szNewPath, str[i]); //“合成”完整路径

do{
hSearch = FindFirstFile(szNewPath, &FileData); //寻找指定文件
if(hSearch!=INVALID_HANDLE_VALUE){
SetFileAttributes(szNewPath,FILE_ATTRIBUTE_NORMAL);//设置文件属性
CloseHandle(hSearch);
DeleteFile(szNewPath);
printf("已经删除 %s\n",szNewPath);
}
}while(hSearch!=INVALID_HANDLE_VALUE);
}
}
icuc88 2006-07-01
  • 打赏
  • 举报
回复
如果你想搜索整个硬盘,需要自己写代码
icuc88 2006-07-01
  • 打赏
  • 举报
回复
hoho,自己不能给自己分。

把你搞定的代码贴出来分享一下。
一笑拔剑 2006-06-30
  • 打赏
  • 举报
回复
给我巴

呵呵

如果你要遍历查找文件的化不应该用这个

应该用FindFile

FindNextFile

http://www.vckbase.com/document/viewdoc/?id=620

这里有完整说明
Casimodo13 2006-06-30
  • 打赏
  • 举报
回复
为什么自己搞定了不能结贴?

又不能自己给自己加分,这……

郁闷啊~~
Casimodo13 2006-06-30
  • 打赏
  • 举报
回复
自己搞定了,原应是FindFirstFileEx只能查找在特定位置的文件。

他是不能像文件搜索那样直接使用的。
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 依据所提供的资料,我们深入剖析此问题以及所给出的两种算法方案。 ### 问题背景 该问题源自王晓东编撰的《算法设计与实验题解》一书,书阐述了一个值得注意的数学议题:针对一本页码从1到n顺序编号的书籍,要求统计所有页码数字0至9各自出现的频次。例如,若n=13,则页码序列为1、2、...、13,其数字1出现5次(体现在1、10、11、12、13),数字0出现1次(体现在10)。 ### 问题描述 具体而言,我们需要开发一种算法,其输入参数为一个正整数n,输出结果需为0至9这十个数字各自出现的频次。所有页码均以十进制形式呈现,且不包含任何前导零,即不会出现如006之类的页码表示。 ### 解决方案一:时间复杂度为O(n*log10(n))的算法 首先,介绍一种时间复杂度为O(n*log10(n))的算法实现。其核心构思在于遍历从1到n的每一个数值,然后逐一分解每个数值的各个位,并统计各类数字出现的频次。具体步骤如下: 1. 初始化一个长度为10的数组`count`,用于记录0至9每个数字出现的频次,初始值均为0。 2. 从1开始遍历至n,对于每一个数值i,将其转换为整数并进行以下操作: - 利用循环结构,持续将当前数值除以10,获取余数(即当前最低位的数字),并累加到对应的计数器。 3. 遍历完成后,输出`count`数组的每一个元素,即为所求的结果。 ### 解决方案二:优化算法 为了提升效率,提出了一种更为优越的算法。该算法基于以下观察:在1到10^n-1之间的任意区间内,每一种数字0至9出现的频次是相等的。例如,在1到999之间,每一种数字0至9出现的频次均相...

6,872

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧