sprintf在C中添加特殊字符

时间:2018-03-09 05:44:44

标签: c linux debian codeblocks

任何人都可以帮助我。我正在尝试创建一个文件夹,但是当我使用sprintf时,它会在最后的特殊字符OUUUU上连接,我该如何修复它? 有一个图像(下面的链接),您可以在其中看到具有"/home/mia"且缓冲区具有"mkdir/home/miaOUUUU"

的目录变量

有什么建议吗?

我在debian中使用代码块...

Sorry, don't know how to copy text from coeblocks

https://drive.google.com/file/d/1q3KKBbyDjA8_dfwKT54_OT_5QeREIz7k/view?usp=sharing

1 个答案:

答案 0 :(得分:1)

您应该在问题正文中发布代码,从IDE中复制+粘贴以及一个额外的缩进级别(选择代码并输入Alt-K),而不是作为位图的链接,它是非常粗鲁。

directorio未终止。您必须使用一个额外元素char directorio[i + 1];声明它,并确保将directorio[i]初始化为'\0'

由于您在后续memset循环中覆盖整个缓冲区,因此for无用。这样做:

char directorio[i + 1];
memcpy(directorio, path, i);
directorio[i] = '\0';
DIRP *dirp = opendir(directorio);
if (dirp == NULL) {
    ...
} else {
    // do not forget to close the directory
    closedir(dirp);
}

另请注意,您应该创建从根目录到最终路径的目录,并且应该处理与路径中的一个目录同名的现有文件的虚假情况。