我在方法中使用FindFirstfFile()
来读取文件夹中的文件
在这个方法中,我将目录路径作为函数参数
Functionname(structname struct_var,char *path);
我考虑了path.i.e例如:“D:\ foldername”。现在使用以下逻辑来读取具有特定扩展名的文件名。
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError;
char* Buffer;
char Buffer1[256];
char *schar;
char *cd;
//wchar_t *cd;
FILE* name_text;
char keyb;
FILE *fp;
i = 0;
time_t t_time;
int count=0;
sprintf(cd,"%s",Path);
printf("%s",cd);
printf ("Target directory is %s.\n",cd);
strcpy(schar,cd);
sprintf(Buffer,"%s",schar);
strcat(Buffer,"\\");
sprintf(Buffer1,"%s",Buffer);
strcat(schar,"\\*.b11");
hFind = FindFirstFile(cd, &FindFileData);//getting conversion error
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid file handle. Error is %u.\n", GetLastError());
return (-1);
}
错误:1> f:\ 2-2-2012 \ myproject \ myproject \ module.cpp(94):错误C2664:'FindFirstFileW':无法将参数1从'char *'转换为'LPCWSTR'
如何将变量“cd”的转换数据类型与out错误匹配。
对它有什么灵魂?
答案 0 :(得分:3)
正在为UNICODE编译源代码。有两个可用的功能:
为UNICODE FindFirstFile
构建时实际为FindFirstFileW
,否则FindFirstFile
为FindFirstFileA
。
编译器抱怨您正在传递char*
而不是宽字符缓冲区。
您需要执行以下操作之一:
FindFirstFileA()
此外,代码中存在一些错误:
sprintf(cd,"%s",Path);
但是cd
是char*
,并且永远不会设置为指向任何已分配的内存,类似于schar
和Buffer
的问题。您需要确定构造所需路径的全长,分配内存然后构造路径(记住free()
分配的缓冲区。)