首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

非常奇怪的有关问题,小妹解决不了

2012-02-25 
非常奇怪的问题,小妹解决不了。我用VS2005想做一个非常简单的程序,目的是遍历E:\\wlan目录下的所有文件。这

非常奇怪的问题,小妹解决不了。
我用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下的

热点排行