C语言函数实现文件信息展示:模式转换、用户组信息获取、时间格式转换

本文介绍了四个C语言函数的代码实现,用于将文件信息中的模式、用户ID、组ID、修改时间等信息进行转换和展示。代码示例基于fileinfo.c文件,添加了 mode_to_char()uid_to_name()gid_to_name()modtime_to_str() 函数。

1. mode_to_char(int mode, char str[])

将文件模式转换为字符数字输出到 str 中。

//1.void mode_to_char(int mode, char str[])
void mode_to_char(int mode, char str[]){
    sprintf(str, '%o', mode);
}

2. char* uid_to_name(int uid)

根据用户ID uid 获取用户名字符串。

//2.char* uid_to_name(int uid)
char* uid_to_name(int uid){
    struct passwd *pw;
    if((pw = getpwuid(uid)) == NULL){
        return NULL;
    }
    return pw->pw_name;
}

3. char* gid_to_name(int gid)

根据组用户ID gid 获取组用户名字符串。

//3.char* gid_to_name(int gid)
char* gid_to_name(int gid){
    struct group *gr;
    if((gr = getgrgid(gid)) == NULL){
        return NULL;
    }
    return gr->gr_name;
}

4. modtime_to_str(time_t modtime,char str[])

利用 ctime 函数将文件修改时间转换为可读字符串。

//4.利用ctime函数将日期格式进行转换
void modtime_to_str(time_t modtime,char str[]){
    char *ctime();
    time_t timeval;
    time(&timeval);
    strcpy(str,ctime(&modtime));
}

fileinfo.c 代码示例

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>

int main(int ac,char *av[]){
    struct stat info;
    if(ac>1)
        if(stat(av[1], &info)!= -1){
            show_stat_info(av[1],&info);
            return 0;
        }
        else
            perror(av[1]);
    return 1;
}

show_stat_info(char *fname,struct stat * buf){
    printf("    mode:   %o\n", buf->st_mode);
    printf("    links  :    %d\n", buf->st_nlink);
    printf("    user   :    %d\n", buf->st_uid);
    printf("    group:    %d\n", buf->st_gid);
    printf("    size    :   %d\n", buf->st_size);
    printf("    modtime: %d\n", buf->st_mtime);
    printf("    name:   %s\n", fname);

}

注意:

  • 以上代码需要在Linux系统上编译运行。
  • 在实际应用中,还需要根据需要进行相应的错误处理和资源释放。
C语言函数实现文件信息展示:模式转换、用户组信息获取、时间格式转换

原文地址: https://www.cveoy.top/t/topic/n4nf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录