有人能帮我吗。我试图创建一个文件夹,但当我使用sprintf
时,它会在结尾处连接特殊字符,如OUUUU
,我如何修复它?
有一个图像(下面的链接),您可以在其中看到目录变量"/home/mia"
和缓冲区"mkdir/home/miaOUUUU"
有什么建议吗?
我在debian中使用代码块。。。
https://drive.google.com/file/d/1q3KKBbyDjA8_dfwKT54_OT_5QeREIz7k/view?usp=sharing
最佳答案
你应该把代码放在问题的正文中,用IDE中的copy+paste和一个额外的缩进级别(选择代码并键入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);
}
还要注意,应该从根目录创建目录到最终路径,并且应该处理与路径中的目录之一相同的名称的现有文件的伪实例。
关于c - sprintf在C中添加特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49187325/