C语言函数实现文件信息展示:模式转换、用户组信息获取、时间格式转换
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系统上编译运行。
- 在实际应用中,还需要根据需要进行相应的错误处理和资源释放。
原文地址: https://www.cveoy.top/t/topic/n4nf 著作权归作者所有。请勿转载和采集!