非常奇怪的问题,小妹解决不了。
我用VS2005想做一个非常简单的程序,目的是遍历E:\\wlan目录下的所有文件。这个目录下只有文件,没有其他目录了。我写完程序可以编译,但是运行居然输出的是我这个工程的目录。而不是E:\\wlan。请各位帮我看看。谢谢大家了
程序如下:
// testword.cpp : 定义控制台应用程序的入口点。
#define _WIN32_WINNT 0x0400
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
char fname[] = "E:\\wlan ";
char s[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char aim[14];
strncpy (aim, fname, strlen(fname)+1);
strncat (aim, "\\* " ,3);
int n = strlen (aim);
WCHAR wstr[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, aim, n , wstr, sizeof(wstr));
wstr[n] = '\0 ';
hFind = FindFirstFile( wstr, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ( " run error!\n ");
exit( GetLastError() );
}
else
{
printf ( "First file name is %s\n ", FindFileData.cFileName);
}
while (FindNextFile(hFind, &FindFileData) != 0)
{
printf ( "First file name is %s\n ", FindFileData.cFileName);
}
return 0;
}
[解决办法]
strncpy (aim, fname, strlen(fname)+1);
strncat (aim, "\\* " ,3);
================
为什么要用 带长度控制的 字符串拷贝/连接??
strcpy (aim, fname);
strcat (aim, "\\* "); //多简单明了~~
[解决办法]
提示说无法讲char*转化为LPCTSTR
可以直接使用强制转换,在VC2005下可以使用 _T();转换
[解决办法]
罕见小妹的问题都没人来解决啊。我昨天试了下,结果是E盘下的目录,估计是你的环境有问题。
[解决办法]
int main()
{
char fname[] = "E:\\ ";
char s[MAX_PATH];
WIN32_FIND_DATAW FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char aim[14];
strncpy (aim, fname, strlen(fname)+1);
strncat (aim, "\\* " ,3);
int n = strlen (aim);
WCHAR wstr[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, aim, n , wstr, sizeof(wstr));
wstr[n] = '\0 ';
hFind = FindFirstFileW( wstr, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ( " run error!\n ");
exit( GetLastError() );
}
else
{
wprintf (L "First file name is %s\n ", FindFileData.cFileName);
}
while (FindNextFileW(hFind, &FindFileData) != 0)
{
wprintf (L "First file name is %s\n ", FindFileData.cFileName);
}
return 0;
}
这个市unicode下的