access、strtol函数的使用(后者为C库函数)

#include <unistd.h>

int access(const char *pathname, int mode);

作用:检查调用该函数的进程是否可以对指定的文件执行某种操作。

第一个形参:文件名;第二个形参:R_OK(是否可读)、W_OK(是否可写)、X_OK(是否可执行)、F_OK(文件是否存在);返回值:0表示拥有所查的权限(即符合该权限)、-1(未通过所查询的权限或者发生了其它错误,详情看perror和errno)。

//代码

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>


int main(int argc, char* argv[])
{
    if(argc < 2)
    {
        printf("a.out filename\n");
        exit(1);
    }

    int ret = access(argv[1], W_OK);
    if(ret == -1)
    {
        perror("access");
        exit(1);
    }
    printf("you can write this file.\n");
    return 0;
}

#include <stdlib.h>

long int strtol(const char *str, char **endptr, int base);

作用:strtol函数会将参数 str 字符串根据参数 base 来转换成长整型数(long)。参数 base 范围从2至36,或0。参数base 代表 str 采用的进制方式,如base 值为10则采用10进制,若base 值为16则采用16进制等。strtol函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。

当base的值为0时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符(指str则会使用 16进制转换,遇到'0'前置字符(指str则会使用8进制转换。

若endptr不为NULL,则会将遇到的不符合条件而终止的字符指针由endptr传回;若 endptr为NULL,则表示该参数无效,或不使用该参数。(一般使用时,直接指定其为NULL就好

参数说明:str 为要转换的字符串,endptr 为第一个不能转换的字符的指针(字符串),base为字符串str所采用的进制。

猜你喜欢

转载自blog.csdn.net/qq_33883085/article/details/88703971