gpt4 book ai didi

c - chmod() 是否需要前导零才能正常工作?

转载 作者:行者123 更新时间:2023-12-02 06:32:16 28 4
gpt4 key购买 nike

我试图从我的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com