2017-02-01 87 views
-1

我想从以下路径导入文件:C的用户名在Linux - 获取当前用户名

进口“/项目/ TFS /用户/ 约翰 /验证/ ......

有没有一种方法可以改变“约翰”为$ USER用C,因此将采取当前用户 并没有采取约翰的文件始终,我试过$ USER,我得到的编译错误。

是有在c中做的一种方法?

+0

尝试'的sprintf(STR, “/项目/ TFS /用户/%S /验证”,GETENV( “USER”))'。 –

+0

为了帮助人们回答您的问题,您需要更加具体地了解错误。请[编辑]您的帖子以合并您从[mcve]中获得的确切错误(最好使用复制+粘贴以避免转录错误)。 –

+0

@ usr--那个问题似乎比这个问题更受限制,例如,它指定不使用'getenv()'。 –

回答

0

您可以使用getpwuidgetuid功能做它:

#include <stdio.h> 
#include <sys/types.h> 
#include <pwd.h> 
#include <unistd.h> 
#include <linux/limits.h> 

int main(void) 
{ 
    char path[PATH_MAX] = {0}; 
    struct passwd *p = getpwuid(getuid()); 

    if (p != NULL) 
    { 
     snprintf(path, sizeof(path), "/projects/tfs/users/%s/verification/.", p->pw_name); 
     printf("%s\n", path); 
    } 

    return 0; 
}