向一个程序中输入文件名,判断指定目录下是否有这个文件,如果有这个文件,将这个文件的属性信息输出。如果不存在输出不存在即可

#include <head.h>

int main(int argc,const char * argv[])
{
    
    DIR *dr;
    struct dirent* dt;
    struct stat st;
    int flag =0;
    if (argc != 3) {
        fprintf(stderr, "input error,try again\n");
        fprintf(stderr, "usage:./a.out  filename directoryname\n");
        return -1;
    }
    if ((dr = opendir(argv[2])) == NULL)
        PRINT_ERR("open dir error");
    while ((dt=readdir(dr))!=NULL)
    {
        if(!strcmp(dt->d_name,argv[1])){
            printf("存在\n");
            flag=1;
            if (lstat(argv[1], &st))
                PRINT_ERR("get file stat error");
                switch (st.st_mode & __S_IFMT) {
                    case __S_IFSOCK:
                        printf("这是套接字文件\n");
                        break;
                    case __S_IFBLK:
                        printf("这是块设备文件\n");
                        break;
                    case __S_IFLNK:
                        printf("这是软连接文件\n");
                        break;
                    case __S_IFDIR:
                        printf("这是目录文件\n");
                        break;
                    case __S_IFCHR:
                        printf("这是字符设备文件\n");
                        break;
                    case __S_IFIFO:
                        printf("这是管道文件\n");
                        break;
                    case __S_IFREG:
                        printf("这是普通文件\n");
                        break;
                }
                printf("ino = %ld\nmode=%#o\nhardlink=%ld\nuid=%s\ngid=%s\nsize=%ld\n",
                st.st_ino, st.st_mode & 0777, st.st_nlink,
                getpwuid(st.st_uid)->pw_name, //根据uid获取用户名
                getgrgid(st.st_gid)->gr_name,
                st.st_size);
        }
    }
    if(flag==0){
        printf("该文件不存在\n");
    }
    closedir(dr);
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值