我正在尝试使用重命名功能(C,在ubuntu下)将文件从一个文件夹移动到另一个文件夹:
rename("./t2.c", "./this/then_this/it_works.c");
它可以创建奇迹,从当前文件夹中删除文件并将其移动到名称下的then_this文件夹中。
但是当我尝试这个时:
rename("./t2.c", "~/.local/share/Trash/files/it_works.c");
它只是不起作用,但在终端输入“cd~ / .local / share / Trash / files / it_works.c”确实打开了垃圾桶。
所以我要做的是将文件移动到垃圾箱(删除它)。谁能告诉我我做错了什么?
答案 0 :(得分:9)
问题是~
仅适用于shell。替换为完整的绝对路径(例如/home/user1031204/.local/...
)&重试。
答案 1 :(得分:4)
~
是一个只在shell中可用的便捷快捷方式。您可以使用getenv("HOME")
实现类似的行为,并将其与目标目录连接。
snprintf(buffer, size_of_buffer, "%s/.local/share/Trash/files/it_works.c",
getenv("HOME"));
请记住#include <stdlib.h>
并拥有一个至少PATH_MAX
字节长(limits.h
)的缓冲区来存储结果。
答案 2 :(得分:4)
realpath()会对您有所帮助。您可能还想查看glob()和wordexp()。