int rename_file()
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(L"\\Hard Disk\\*.*", &FindFileData);
LPTSTR oldfilename;
LPTSTR newfilename;
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFile failed (%d)\n", GetLastError());
return 0;
}
else
{
int i=1000;
while (FindNextFile(hFind, &FindFileData) != 0)
{
_tprintf (TEXT("The first file found is %s\n"),FindFileData.cFileName);
oldfilename =FindFileData.cFileName;
StringCchPrintf(newfilename, 30, TEXT("%s\\newfile_%d.txt"),dirname, i);
BOOL rs = MoveFile(oldfilename,newfilename);
i++;
}
FindClose(hFind);
return 1;
}
}
我无法重命名文件,我正在工作wince 6,而在StringCchPrintf调试我在coredll.dll中获得异常可以帮助我....
答案 0 :(得分:4)
您尚未为newFileName
分配任何缓冲区,因此当您在StringCchPrintf
中使用它时,它只是一个未初始化的指针。
试试这个:
TCHAR newFile[260]; // or whatever length you wish
LPTSTR newfilename = &newFile[0];
此外,您应该检查来自MoveFile
的返回代码,并在出错时输出合理的内容。养成为所有可能返回错误的函数调用执行此操作的习惯。