我是C++的新手。我的程序崩溃了,我试图找出原因。在代码的某个点上,我生成一个随机数,然后复制一个文件,该文件的原始文件名后跟数字

char CopyPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_MYMUSIC, NULL, 0, CopyPath);
int randomNumber = 101 + rand()%1000000000;
char randomBuffer[15];
itoa(randomNumber, randomBuffer, 10);

char computerName[MAX_COMPUTERNAME_LENGTH+1];
DWORD size = MAX_COMPUTERNAME_LENGTH;
if(!GetComputerName(computerName, &size))
    strcat(computerName, "FAIL");
strcat(CopyPath,"\\");
strcat(CopyPath, computerName);
strcat(CopyPath, "-");
strcat(CopyPath, randomBuffer);
copyFile(oldpath, CopyPath);

我怀疑崩溃发生在这里的某个地方。我的问题是,由于尚未声明CopyPath的所有值,因此会发生崩溃。我应该宣布为
char CopyPath[MAX_PATH] = {'\0'}

这可能是问题吗?

最佳答案



这应该是strcpy,因为computerName中没有要附加的有效字符串。

另外,您可能应该调用SHGetFolderPathA,因为您要传递char的缓冲区(而不是TCHAR)。

07-24 09:37