首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >级联路径和basename

级联路径和basename
EN

Stack Overflow用户
提问于 2009-08-20 10:40:41
回答 1查看 3.2K关注 0票数 4

basename(3)和dirname(3)可以将绝对路径拆分为其各自的组件。

除了使用snprintf(3)之外,是否有一个与posix兼容的自然库调用进行反向接收目录和文件名并将它们连接起来?

手动连接对我来说很好,但有时会变得有些乏味。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-20 10:46:37

据我所知,POSIX中没有这样的功能。然而,在GNU手册有一个很好的助手函数

代码语言:javascript
复制
char *concat (const char *str, ...)
  {
   va_list ap;
   size_t allocated = 100;
   char *result = (char *) malloc (allocated);

   if (result != NULL)
     {
       char *newp;
       char *wp;

       va_start (ap, str);

       wp = result;
       for (s = str; s != NULL; s = va_arg (ap, const char *))
         {
           size_t len = strlen (s);

           /* Resize the allocated memory if necessary.  */
           if (wp + len + 1 > result + allocated)
             {
               allocated = (allocated + len) * 2;
               newp = (char *) realloc (result, allocated);
               if (newp == NULL)
                 {
                   free (result);
                   return NULL;
                 }
               wp = newp + (wp - result);
               result = newp;
             }

           wp = mempcpy (wp, s, len);
         }

       /* Terminate the result string.  */
       *wp++ = '\0';

       /* Resize memory to the optimal size.  */
       newp = realloc (result, wp - result);
       if (newp != NULL)
         result = newp;

       va_end (ap);
     }

   return result;
 }

用法:

代码语言:javascript
复制
const char *path = concat(directory, "/", file);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1305297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档