我正在创建一个程序来管理tar文件。 我使用struct stat:
打印文件的权限printf("%d\n", buff->st_mode); /* I get a number like 33152 */
但是我需要将权限放在struct header的模式[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 -------) 但我怎么能用正确的写作
转换char *中的st_mode答案 0 :(得分: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"