我的realpath
功能有一个奇怪的问题。该函数在给定作为程序参数接收的字符串时起作用,但在给定我在源代码中定义的字符串时会失败。这是一个简单的程序:
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
int main(int argc, const char* argv[])
{
char* fullpath = (char*)malloc(PATH_MAX);
if(realpath(argv[1], fullpath) == NULL)
{
printf("Failed\n");
}
else
{
printf("%s\n", fullpath);
}
}
当我使用参数运行它时~/Desktop/file
(file
存在并且是常规文件),我得到了预期的输出
/home/<username>/Desktop/file
这是该程序的另一个版本:
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
int main(int argc, const char* argv[])
{
const char* path = "~/Desktop/file";
char* fullpath = (char*)malloc(PATH_MAX);
if(realpath(path, fullpath) == NULL)
{
printf("Failed\n");
}
else
{
printf("%s\n", fullpath);
}
}
当我运行这个程序时,我得到了输出
Failed
为什么第二个失败了?