下面四个错误怎么更改?

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;
}
...全文
237 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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}; 对了发错版块了

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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