2017-02-01 123 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; 
}