sprintf
时,它会在最后的特殊字符OUUUU
上连接,我该如何修复它?
有一个图像(下面的链接),您可以在其中看到具有"/home/mia"
且缓冲区具有"mkdir/home/miaOUUUU"
的目录变量
有什么建议吗?
我在debian中使用代码块...
https://drive.google.com/file/d/1q3KKBbyDjA8_dfwKT54_OT_5QeREIz7k/view?usp=sharing
答案 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);
}
另请注意,您应该创建从根目录到最终路径的目录,并且应该处理与路径中的一个目录同名的现有文件的虚假情况。