我的程序是这样的: char *fname[200];
int i=0;
while(flag)
{
fname[i]=FindFileData.cFileName;//FindFileData是WIN32_FIND_DATA定义的结构体,FindFileData.cFileName是获取的文件的名字
i++;
//
flag标志的操作
// } FILE *output;
output=fopen("name.txt","w"); for(int j=0;j<i;j++)
{
fprintf (output,"\n the %d file's name is %s",j,fname[j]);
}调试程序,FindFileData.cFileName每次循环都正确,为不同文件的名字(WORD类型),但是最终程序输出文件name.txt中名字都是最后一个文件的名字,好像之前的
名字都被最后一个覆盖掉了,不知道是怎么回事?
请教各位了!非常感谢!
int i=0;
while(flag)
{
fname[i]=FindFileData.cFileName;//FindFileData是WIN32_FIND_DATA定义的结构体,FindFileData.cFileName是获取的文件的名字
i++;
//
flag标志的操作
// } FILE *output;
output=fopen("name.txt","w"); for(int j=0;j<i;j++)
{
fprintf (output,"\n the %d file's name is %s",j,fname[j]);
}调试程序,FindFileData.cFileName每次循环都正确,为不同文件的名字(WORD类型),但是最终程序输出文件name.txt中名字都是最后一个文件的名字,好像之前的
名字都被最后一个覆盖掉了,不知道是怎么回事?
请教各位了!非常感谢!
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ]; //调用这个成员
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
你需要拷贝其数据(每次填充的),而不是其地址
int i=0;
while(flag)
{
fname[i]=FindFileData.cFileName;//这里使用strcpy()进行拷贝操作!!
i++;
//
flag标志的操作
// }
Mack所说 保存文件路径分配MAX_PATH大小即可 是什么意思呢?
谢谢。
编译没有错误,运行是就有错误了。说是内存不能为“writen”
另外这些动态开辟的空间需要在使用完毕之后释放删除。
如果嫌麻烦或操作要求不高可以直接定义二维数组。