下面四个错误怎么更改?

mirro187_ 2013-02-07 01:10:56

error C2664: “FindFirstFileW”: 不能将参数 1 从“LPSTR”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
error C2664: “strcat”: 不能将参数 2 从“WCHAR [260]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换







#include "stdafx.h"
#include "Windows.h"
#include "stdio.h"

void Find(LPSTR path){
WIN32_FIND_DATA fs={0};

CHAR buf[512]={0};
strcpy(buf,path);

strcat(path,"/*.*");

HANDLE hFind=FindFirstFile(path,&fs);
BOOL goFind=TRUE;

while(goFind){
if(fs.dwFileAttributes==FILE_ATTRIBUTE_ARCHIVE)
{
printf("%s\n",fs.cFileName);
Sleep(1000);
}else{
if(strcmp(fs.cFileName,".")&&strcmp(fs.cFileName,"..")){
CHAR buff[512]={0};
strcat(buff,buf);
printf("[%s]\n",fs.cFileName);
Sleep(1000);
strcat(buff,"/");
strcat(buff,fs.cFileName);
Find(buff);
printf("-----------\n");
}
}
goFind=FindNextFile(hFind,&fs);
}
//free(nPath);
FindClose(hFind);
return;
}
int main(int argc, char* argv[])
{
CHAR path[512]="E:/win32/dll_lib";
Find(path);
return 0;
}
...全文
208 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jimette 2013-02-07
strcmp有通用版本
  • 打赏
  • 举报
回复
Aweiwei_ 2013-02-07
你的Find函数要求传入的是一个ANSI字符串,但是编写的却是一个UNICODE程序,这是不科学的= = 把void Find(LPSTR path) 改成 void Find(LPWSTR path) 把CHAR buf[512]={0};改成WCHAR buf[512]={0}; 对了发错版块了
  • 打赏
  • 举报
回复
相关推荐
发帖
图形处理/算法
加入

1.9w+

社区成员

VC/MFC 图形处理/算法
申请成为版主
帖子事件
创建了帖子
2013-02-07 01:10
社区公告
暂无公告