在网上找的代码,有点错,不知道怎么改?拜托大家了

unhappyless_21 2007-08-10 09:39:14
#include <iostream>
#include <windows.h>
#include <cstring>

using namespace std;


void ListFile(char* szDir)
{
char szTempDir[MAX_PATH+1];
strcpy(szTempDir,szDir);
strcat(szTempDir,"*");
HANDLE hFindFile;
WIN32_FIND_DATA FileData;

hFindFile = FindFirstFile(szTempDir,&FileData);

if( hFindFile == INVALID_HANDLE_VALUE )
{
return ;
}
else
{
do
{

if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(FileData.cFileName,".")
&& strcmp(FileData.cFileName,".."))
{
char szNewDir[MAX_PATH+1];
strcpy(szNewDir,szDir);
strcat(szNewDir,FileData.cFileName);
strcat(szNewDir,"\\");
ListFile(szNewDir);
}
else
{
cout<<szDir<<FileData.cFileName<<endl;
}
}
while(FindNextFile(hFindFile,&FileData));

FindClose(hFindFile);
}
}





int main()
{
char szPath[MAX_PATH+1];
while(cin>>szPath)
{
if(szPath[strlen(szPath)-1]!='\\')
strcat(szPath,"\\");
ListFile(szPath);
}
return 0;
}
...全文
621 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
m_sean 2007-08-11
  • 打赏
  • 举报
回复
vs2005 项目->XXX属性->配置属性->常规->字符集 改为 “未设置” 就去掉了unicode支持,不过应该回报一个警告,但不知其他方法行不行
gfxiang 2007-08-10
  • 打赏
  • 举报
回复
我手头上没装vs2005,我觉得应该在c++预处理那里找
如果实在找不到也可以在#include <windows.h>之前加上一句
#undef UNICODE
来解决
unhappyless_21 2007-08-10
  • 打赏
  • 举报
回复
把工程设置里去掉UNICODE宏定义

我用的是 vs2005, 在 常规-->字符集 里设置吗?
gfxiang 2007-08-10
  • 打赏
  • 举报
回复
或者,你全部使用
TCHAR替换char
字符串常量用_T()括起来,如_T("*")
gfxiang 2007-08-10
  • 打赏
  • 举报
回复
把工程设置里去掉UNICODE宏定义
unhappyless_21 2007-08-10
  • 打赏
  • 举报
回复
这代码网上找的,我还不是很清楚是做什么用的。

就下面两错误:

hFindFile = FindFirstFile(szTempDir,&FileData);
error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR”


strcmp(FileData.cFileName,".")
error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
gfxiang 2007-08-10
  • 打赏
  • 举报
回复
同感,想让别人帮你,至少把问题说清楚,如果有错误,就应该把错误列出来。提问也有提问的智慧(google 提问的智慧),问题要写清楚,尽可能详细点,一方面,别人才能准确知道你的问题所在,才能更好的帮你解决问题,另一方面也节省大家的宝贵时间,何乐而不为呢?
unhappyless_21 2007-08-10
  • 打赏
  • 举报
回复
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(11) : warning C4996: “strcpy”被声明为否决的
d:\microsoft visual studio 8\vc\include\string.h(73) : 参见“strcpy”的声明
消息:“This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(12) : warning C4996: “strcat”被声明为否决的
d:\microsoft visual studio 8\vc\include\string.h(78) : 参见“strcat”的声明
消息:“This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(16) : error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(28) : error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(29) : error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\wengtn\my documents\visual studio 2005\projects\sdf\sdf\gfd.cpp(33) : error C2664: “strcat”: 不能将参数 2 从“WCHAR [260]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
生成日志保存在“file://c:\Documents and Settings\WengTN\My Documents\Visual Studio 2005\Projects\sdf\sdf\Debug\BuildLog.htm”
sdf - 4 个错误,2 个警告
believefym 2007-08-10
  • 打赏
  • 举报
回复
没错
输入目录,列出目录下的文件名


还有,以后提问题能不能提清楚点,贴完代码走人是不负责任的行为,谁知道代码是干嘛的,错在哪了

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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