gpt4 book ai didi

c - 下面的代码可以正确回答问题吗?

转载 作者:行者123 更新时间:2023-11-30 19:00:59 27 4
gpt4 key购买 nike

编写一个 C 函数,以文件名作为参数,如果给定文件存在、是普通文件并且某人对其具有执行权限,则返回 true,否则返回 false。

int is_program(char *fname){
struct stat sb;
int res;

res = stat(fname, &sb);

if(res == 0)/*if file exists*/
{
if(S_ISREG(sb.st_mode) & (S_IXUSR | S_IXGPR | S_IXOTH))
return 1;
else
return 0;
}
return 0;
}

最佳答案

没有;你所拥有的无法完成所需的工作。

您需要将测试分离为常规文件:

ISREG(sb.st_mode)

来自可执行性测试:

(sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))

因此你可以使用:

return (ret == 0) && ISREG(sb.st_mode) && (sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH));

您可能更愿意将其分开:

if (ret != 0)
return 0;
if (!ISREG(sb.st_mode))
return 0;
return (sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH));

关于c - 下面的代码可以正确回答问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58687540/

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