【发布时间】:2017-08-22 17:03:54
【问题描述】:
我最近编写了一个蛮力程序,将八进制数据从 Unix 中的权限转换为人类可读的形式(例如 755 -> rwxr-xr-x)但是,每当我运行名为 myperm 的程序时,我都没有得到结果(例如 @ 987654323@) 我不太清楚为什么有人可以帮助解决这个问题
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argv[1] == "777")
{
printf("rwxrwxrwx");
}
else if (argv[1] == "755")
{
printf("rwxr-xr-x");
}
else if (argv[1] == "750")
{
printf("rwxr-x---");
}
else if (argv[1] == "700")
{
printf("rwxr-x---");
}
else if (argv[1] == "666")
{
printf("rw-rw-rw");
}
else if (argv[1] == "664")
{
printf("rw-rw-r--");
}
else if (argv[1] == "640")
{
printf("rw-r-----");
}
else if (argv[1] == "600")
{
printf("rw-------");
}
else if (argv[1] == "400")
{
printf("r--------");
}
return (0);
}
【问题讨论】:
-
(argv[1] == "777")->(strcmp(argv[1],"777") == 0) -
"..."计算为字符数组,您需要比较字符,而不是地址。 -
旁注:您的代码非常糟糕:考虑编写一个将八进制数字转换为“rwx”(7)的函数,否则您的代码将非常长并且容易出错,涵盖所有情况。
标签: c unix printing printf octal