我试图从我的 C 程序中调用 chmod()
函数,但是它
没有设置正确的权限,除非 mode_t
参数有
其中有前导零。例如 chmod(argv[2],00777)
会起作用,
但是 chmod(argv[2],777)
将设置完成垃圾的权限。
当我尝试使用 atoi()
时,大问题来了,因为它会
丢弃任何前导零。有什么办法可以做到以下几点
即使用户输入没有前导零的值,程序也能正常工作
在命令行中?
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
if (argc != 3)
exit(EXIT_FAILURE);
if (chmod(argv[2], (mode_t)atoi(argv[1])) != 0)
printf("Warning: Unable to change file permissions.");
return 0;
}
最佳答案
是的,零是必需的,除非您提前将数字转换为正确的基数。整数文字中的前导零使 C 以八进制读取数字,与 0x
使其以十六进制读取整数的方式相同。如果您使用 strtol
,您可以提供一个值为 8 的 base
参数来读取八进制整数。
关于c - chmod() 是否需要前导零才能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362423/