在C编程中,如何在mkdir函数中传递类似(“~/test/foo”)的字符串文字?
可能重复:在C编程中,如何在mkdir函数中传递类似(“~/test/foo”)的字符串文字?,c,arguments,mkdir,C,Arguments,Mkdir,可能重复: 我试图在C程序中创建一个目录,并使用mkdir函数。 我的计划如下: #include <stdio.h> #include <string.h> #define MKDIR(x) mkdir(x) int main() { //If i do mkdir("foo"), the dir is created mkdir("~/test/foo"); //Directory foo not created ins
我试图在C程序中创建一个目录,并使用mkdir函数。 我的计划如下:
#include <stdio.h>
#include <string.h>
#define MKDIR(x) mkdir(x)
int main() {
//If i do mkdir("foo"), the dir is created
mkdir("~/test/foo"); //Directory foo not created inside test dir
}
#包括
#包括
#定义MKDIR(x)MKDIR(x)
int main(){
//如果我执行mkdir(“foo”),则会创建目录
mkdir(“~/test/foo”);//未在test dir内创建目录foo
}
dir foo不是在Test dir中创建的
但我如何才能做到这一点?
谢谢,预先mkdir()
函数没有展开~
快捷方式,您必须从HOME
环境变量中提取值。(参见mangetenv
)。检查wordexp:
#包括
#包括
int main(){
wordexp\u t p;
如果(wordexp(“~/”,&p,0)=0{
printf(“%s\n”,p.we_wordv[0]);
wordfree&p;
}
返回0;
}
谢谢您的回复。我使用HOME变量进行了测试。在我必须编写的程序中,我不会在主目录中创建目录,而是在不在主目录中的目标文件夹中创建目录。是否有其他方法可以定义mkdir函数的特定路径而不使用getenv?如果它不在主目录中,则可以指定完整路径,如“/home/yourcount/test/foo”
作为文本。谢谢,我会测试它,看看它是否对我有效。是的,它有效,我还使用了system(“mkdir/test/foo”)来创建一个dir.Is system()函数比mkdir()慢。当然,您可以运行mkdir-p
,但如果目录名包含空格或更糟糕的内容,您必须转义目录名。当然,您可以使用exec*
运行mkdir
,但老实说,我认为逐个创建目录(如果您确实需要-p
)更容易。简言之,如果你是用c语言写的,那就用c语言写吧。非常感谢你的编码
#include <wordexp.h>
#include <stdio.h>
int main() {
wordexp_t p;
if (wordexp("~/", &p, 0)==0) {
printf("%s\n", p.we_wordv[0]);
wordfree(&p);
}
return 0;
}