我是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
)。