在GNU / Linux上找到Windows的PathAppend的替代品

时间:2010-07-10 06:58:38

标签: c linux path

C编程,有没有什么好方法可以管理路径字符串而不是像linux上的strcat那样使用C字符串API?相当于Windows的PathAppend会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个快速,肮脏,接下来未经测试的版本,它将路径与两者之间的非常友好的“/”分隔符连接起来:

int PathAppend( char* path, char const* more)
{
    size_t pathlen = strlen( path);

    while (*more == '/') {
        /* skip path separators at start of `more` */
        ++more;
    }

    /* 
     * if there's anything to add to the path, make sure there's 
     * a path separator at the end of it
     */

    if (*more && (pathlen > 0) && (path[pathlen - 1] != '/')) {
        strcat( path, "/");
    }

    strcat( path, more);

    return 1; /* not sure when this function would 'fail' */
}

请注意,在我看来,此函数应该有一个指示目标大小的参数。我也没有实现Win32删除“。”的文档功能。路径开头的“..”组件(为什么会出现?)。

另外,什么会导致Win32的PathAppend()返回失败?

使用(和/或修改),风险自负......