我想以八进制格式打印文件权限。
我已使用统计系统调用和统计结构来检索权限字段。
我想做的就是用最后4位数打印,但字段有6位数。
即,
struct stat s1;
stat(somefile, &s1);
printf("%o", s1->st_mode);
将打印出六位数,前两位我要丢弃。我可以使用某种修剪功能吗?
我没有找到很长的路,只是一个简单的快捷方式。
答案 0 :(得分:2)
如果我理解了这个问题:
你需要得到最后4位数除去所有其余的数字,然后
int a = 234348;
int b = a & 07777;
printf("a = %o\nb = %04o\n", a, b);
将输出:
a = 711554
b = 1554
在您的情况下:
printf("%04o", (s1->st_mode & 07777));