如何在C中实现波浪扩展?

chdir("~/")似乎不起作用。 我是否希望看到字符串并用手代替代字号,还是有更好的方法?

POSIX提供了wordexp(3)来执行类似shell的扩展,包括波浪扩展。

您可以使用下面的wordexp示例

 #include  #include  int main(int argc, char* argv[]) { wordexp_t exp_result; wordexp(argv[1], &exp_result, 0); printf("%s\n", exp_result.we_wordv[0]); } 

路径中的波浪号是特定于壳的东西。 你能做什么看看第一个字符是波浪号和斜线(或字符串的波浪末端),然后将波形符号替换为环境变量HOME (可以从getenv获得)的值。

如果第二个字符不是斜杠,则最有可能是~user/path的forms。 然后,您必须提取用户名并使用例如getpwnam来获取用户的密码条目,该条目包含该用户主目录。