0

我正在运行以下程序,它检查文件是否存在或不使用stat(). 但是,当我通过一条路径说时,它会因错误$HOME/file.sh而失败。ENOENT但是当我通过扩展路径时,即/root/file.sh返回stat()成功,即退出代码 0。

int main ()
{
    struct stat statbuf;
    char path [1024];
    strcpy(path,"$HOME/file.sh");

    int rc = stat(path,&statbuf);

    if (rc == -1 )
    {
        printf ("File not found !!\n");
    }
    else
        printf("Found it !!\n");

    return 0;
}
4

1 回答 1

4

strcpy()不会将环境变量扩展$HOME为其值,但会按指定复制提取字符串文字。您可以获得$HOMEusing的值getenv()

将您的失败消息更改为:

printf("File not found: %s\n", path);

确认。

于 2012-09-18T13:24:47.757 回答