2013-09-22 57 views
2

我正在創建一個用於管理tar文件的程序。 我打印文件的權限與結構靜:用struct stat獲得tar頭文件的權限

printf("%d\n", buff->st_mode); /* I get a number like 33152 */ 

,但我需要把權限在我的結構標題的模式[8]:

typedef struct s_head 
{ 
    char  name[100]; 
    char  mode[8]; 
    char  uid[8]; 
    char  gid[8]; 
    char  size[12]; 
    char  mtime[12]; 
    char  chksum[8]; 
    char  linkflag; 
    char  linkname[100]; 
    char  magic[8]; 
    char  uname[32]; 
    char  gname[32]; 
    char  devmajor[8]; 
    char  devminor[8]; 
}    t_head; 

,當我打印模式我應該得到像這樣000600(爲rw -------) 但我怎麼能轉換我的st_mode在char *與正確的寫作

回答

0

使用八進制。

OP的編號是int,其值爲33152.通過將其打印爲八進制數,通常的「rwx」設置更明顯:100600。

// printf("%d\n", buff->st_mode); // OP gets a number like 33152 
printf("%o\n", buff->st_mode); // 100600 
snprintf(s_head.mode, sizeof(s_head.mode), "%06o", buff->st_mode); // "100600"