删除C中八进制值的前两位数字

时间:2014-09-11 01:53:10

标签: c

我想以八进制格式打印文件权限。

我已使用统计系统调用和统计结构来检索权限字段。

我想做的就是用最后4位数打印,但字段有6位数。

即,

struct stat s1;
stat(somefile, &s1);
printf("%o", s1->st_mode);

将打印出六位数,前两位我要丢弃。我可以使用某种修剪功能吗?

我没有找到很长的路,只是一个简单的快捷方式。

1 个答案:

答案 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));