下面是我从网上找到的一个关于获得一个文件夹下所有文件的函数,
void Fget_filename(char *fdirectoryPath, char *filename_array[], int &file_num)
{
WIN32_FIND_DATA data;    //is FindFirstFile Parameters
HANDLE hFind;
int nCount = 0;
char filenm[256];
memset(filenm,0,256);
strcpy(filenm,fdirectoryPath);
strcat(filenm,"*.*"); //查找当前目录下所有文件
hFind = FindFirstFile(filenm,&data);
while (hFind != INVALID_HANDLE_VALUE)
{
strcpy(filename_array[nCount],data.cFileName);
nCount++;
if (!FindNextFile(hFind,&data))
{
CloseHandle(hFind);
hFind = INVALID_HANDLE_VALUE;
}
file_num = nCount;
}}
在我引用它的时候发现总是在
strcpy(filename_array[nCount],data.cFileName);
这个地方出错,请高手拔刀相助~~

解决方案 »

  1.   

    filename_array[nCount]原始为定义char   *filename_array[256]错误提示是Unhandled exception in smc.exe:0xC0000005:Access Violation
      

  2.   

    filename_array应该是CStringArray类型的
    使用CStringArray的Add方法添加,不要用strcpy
      

  3.   

    char       *filename_array[256] 是char*数组
    那么使用之前你要先分配内存空间阿
    filename_array[0]=new char[_MAX_PATH];
    还是建议你使用CStringArray,简单方便
      

  4.   

    strcpy(filename_array[nCount],data.cFileName); 
    filename_array[nCount]原始为定义char       *filename_array[256],为char*
    后面的data.cFileName为TCHAR
    类型不一致~~
    要进行转化的~~~