переименование нескольких файлов - PullRequest
0 голосов
/ 16 июня 2011
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 iam может получить исключение в coredll.dll, может помочь мне любой ....

1 Ответ

4 голосов
/ 16 июня 2011

Вы не выделили никакой буфер для newFileName, поэтому при использовании его в StringCchPrintf это просто неинициализированный указатель.

Попробуйте это:

TCHAR newFile[260]; // or whatever length you wish
LPTSTR newfilename = &newFile[0];

Также вы должны проверить код возврата из MoveFile и вывести что-нибудь толковое при ошибке. Сделайте это привычным для всех вызовов функций, которые могут возвращать ошибку.

...