我有以下几点:

char confchar[MAX_PATH] = "\\dbstrings.cfg";
char buffer[MAX_PATH];
GetModuleFileNameA( NULL, buffer, MAX_PATH );
path_strip_filename(buffer);


在这里,我得到了实际工作应用程序的路径。到目前为止,这是可行的。我去拿

c:\users\xxx\documents\visual studio 2008\projects\secdb\debug\


我使用strcat_s来组合这些:

char c_buffer[MAX_PATH*2] ;
strcat_s(c_buffer, buffer);
strcat_s(c_buffer, confchar);


该字符串可兼容用于标签:

System::String^ c_bufstr = gcnew String(c_buffer);
this->lbl_stat->Text = lbltxt;


现在我得到类似:

@1vc:\users\xxx\documents\visual studio 2008\projects\secdb\debug\dbstrings.cfg


我还弄乱了那个MAX_PATH,用整数替换它,依此类推。结果是一样的。那么,我该怎么做才能删除路径前面的@ 1v?

最佳答案

char c_buffer[MAX_PATH*2] ;
strcat_s(c_buffer, buffer); // <-- problem!
strcat_s(c_buffer, confchar);


c_buffer未初始化,因此您需要在调用strcat_s之前将其第一个元素设置为0,或者使用strcpy_s而不是第一次调用strcat_s

08-26 18:50