strcat_s添加了奇怪的字符

时间:2014-11-12 18:08:42

标签: c++ visual-c++ visual-studio-2008

我有以下内容:

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?

2 个答案:

答案 0 :(得分:7)

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。< / p>

答案 1 :(得分:1)

感谢所有人,似乎问题已经解决了。

[...]
char buffer[MAX_PATH] = {};
[...]
char c_buffer[MAX_PATH*2] ;
strcpy_s(c_buffer, buffer);
strcat_s(c_buffer, confchar);
[...]

标签中显示的字符串现在应该是它。