在 Linux 操作系统中文件的权限可以通过 rwx 的方式来表示,r 表示可读,w 表示可写,x 表示可执行。
在这题中,我们会得到文件当前的权限和希望添加或删除的权限(如果已经对存在/不存在的权限添加/删除则不做改变)。你需要输出最终改变后的权限的十进制描述。
输入格式
输入第一行是当前的文件权限,用 r、w、x 的字母中的一个或多个来表示(r,w,x 不会重复)。之后每一行会以 + 或 - 开头;如果以 + 开头,则表示添加一个权限,如果 - 开头,则表示删除一个权限。
输出格式
将修改后的权限以十进制数字的方式输出出来。
#include <stdio.h>
#include <string.h>
int main() {
char m[100];
char *p ;
p = &m;
int count;
int r = 0 ,w = 0,x = 0;
int i;
scanf("%s",&m);
for ( i = 0; i < 3; i++) {
if (m[i] == 'r') {
r += 4;
//printf("r%d \n",r);
}
if (m[i] == 'w') {
w += 2;
// printf("w%d \n",w);
}
if (m[i] == 'x') {
x += 1;
// printf("x%d \n",x);
}
}
while (scanf("%s",&m) != EOF) {
if (m[0] == '+'){
//printf("+ok\n");
p++;
if (m[1] == 'r') {
r += 4;
// printf("ok1%d\n",r);
}
if (m[1] == 'w') {
w += 2;
// printf("ok2%d\n",w);
}
if (m[1] == 'x') {
x += 1;
//printf("ok3%d\n",x);
}
count = r + w + x;
i = 3;
// printf("+%d\n",count);
}
else{
//printf("-ok\n");
p++;
if (m[1] == 'r') {
r -= 4;
//printf("ok4%d\n",r);
}
if (m[1] == 'w') {
w -= 2;
//printf("ok5%d\n",w);
}
if (m[1] == 'x') {
x -= 1;
//printf("ok6%d\n",x);
}
count = r + w + x;
i = 3;
// printf("-%d\n",count);
}
//printf("ok\n");
}
count = r + w + x;
printf("%d",count);
return 0;
}