c++ 创建后文件夹未正确命名

j8ag8udp  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个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[]部分有任何关系,因为我已经单独测试过了,它工作得很好。

l7wslrjt

l7wslrjt1#

Igor Tandetnik建议使用std::string而不是const char *,这似乎奏效了。

相关问题