我有一个C++函数createFolder(注解前的符号是vscode中更好的注解插件):
void createFolder(const char *dir, const char *foldername)
{
// ! Checking to see if the folder already exists
if (hasFolder(dir, foldername))
return;
// ? Full directory
char buffer[sizeof(dir) + sizeof(foldername) - 2];
strncpy(buffer, dir, sizeof(buffer));
strncpy(buffer, foldername, sizeof(buffer));
// ? Creating folder
int success = mkdir(buffer);
// ! Checking to see if folder creation worked
if (success == -1)
std::cerr << "Error: " << strerror(errno) << "\n";
}
由于某种原因,如果我尝试创建一个名称超过6个字符的文件夹,它会在st.t12ÀÌ6u
末尾添加这个奇怪的字符
下面是我用来测试这个的代码:
int main(int argc, char *argv[])
{
// This will work fine
createFolder("./", "123456");
// This adds the weird "st.t12ÀÌ6u" part
createFolder("./", "1234567");
return 0;
}
我怀疑它与代码的char buffer[]
部分有任何关系,因为我已经单独测试过了,它工作得很好。
1条答案
按热度按时间l7wslrjt1#
Igor Tandetnik建议使用
std::string
而不是const char *
,这似乎奏效了。