C语言输出目录下文件的属性
向一个程序中输入文件名,判断指定目录下是否有这个文件,如果有这个文件,
将这个文件的属性信息输出。如果不存在输出不存在即可。
./a.out 目录名 查询的文件名
#include <head.h>
int main(int argc, const char* argv[])
{
DIR* dr; //打开目录用到的变量
struct dirent* dt; // 目录结构体
struct stat st; //文件结构体
int ret = 0;
if (argc != 3) {
fprintf(stderr, "input error,try again\n");
fprintf(stderr, "usage: ./a.out dirname filename\n");
return -1;
}
if ((dr = opendir(argv[1])) == NULL)
PRINT_ERR("open dir error");
if (lstat(argv[2], &st))
PRINT_ERR("get file lstat error");
switch (st.st_mode & 0170000) {
case 0140000:
printf("这是套接字文件\n");
break;
case 0060000:
printf("这是块设备文件\n");
break;
case 0120000:
printf("这是软链接文件\n");
break;
case 0040000:
printf("这是目录文件\n");
break;
case 0020000:
printf("这是字符设备文件\n");
break;
case 0010000:
printf("这是管道文件\n");
break;
case 0100000:
printf("这是普通文件\n");
break;
}
printf("info=%ld,type=%#o,mode=%#o,hardlink=%ld,uid=%s,gid=%s, size = %ld\n",
st.st_ino, st.st_mode & 0170000, st.st_mode & 0777, st.st_nlink,
getpwuid(st.st_uid)->pw_name, getgrgid(st.st_gid)->gr_name, st.st_size);
closedir(dr);
return 0;
}