day3

1. 用read函数完成文件大小计算
#include
int main(int argc, const char *argv[])
{
    int fd_r = open("1.JPG",O_RDONLY);
    if(0>fd_r)
    {
        ERR_MSG("open");
        return -1;
    }
    
    char ele[20]="";
    int sum=0;
    while(1)
    {
        bzero(ele,sizeof(ele));
        ssize_t ans=0;
        ans=read(fd_r,ele,sizeof(ele));
        if(ans==0)
            break;
        sum+=ans;
    }
    printf("copy ended\n");
    printf("size=%d\n",sum);
    if(close(fd_r)<0)
    {
        ERR_MSG("close");
        return -1;
    }
    printf("close success\n");
    return 0;
}


2. 将课上的的文件权限提取修改成循环方式
//主函数
#include "top.h"
int main(int argc, const char *argv[])
{
    //获取文件信息
    struct stat filemessage;
    char filename[20]="1.txt";
    int f=stat(filename,&filemessage);
    if(f<0)
    {
        printf("get message failed\n");
    }
    else
    {
        //输出inode number
        printf("inode number:%ld\n",filemessage.st_ino);

        //输出文件类型以及权限
        printf("file type and mode:%o\n",filemessage.st_mode);
        Transform_Mode(filemessage.st_mode);

        //输出文件硬链接个数
        printf("hardlink:%ld\n",filemessage.st_nlink);
        //输出文件所属用户名
        printf("user name:%d\n",filemessage.st_uid);
        //输出文件所属组用户
        printf("group name:%d\n",filemessage.st_gid);
        //输出文件所占字节大小
        printf("size of file:%ld\n",filemessage.st_size);
        //输出文件修改时间
        printf("time:%ld\n",filemessage.st_mtime);
        //输出文件名
        printf("file name:%s\n",filename);
    }
    printf("message has been outputted\n");
    return 0;
}
//头文件
#ifndef __HEAD_H2__
#define __HEAD_H2__
#include
void Transform_Mode(int mode);
#endif
//子函数
#include "top.h"
void Transform_Mode(int mode)
{
    int f=0400;    
    int count=0;
    while(f!=0)
    {    

            if(count==3)
                count=0;
        if((mode & f)!=0)
        {
            switch(count)
            {
            case 0:putchar('r');break;
            case 1:putchar('w');break;
            default:putchar('x');break;
            }
        }
        else
            putchar('-');
        f=f>>1;
        //printf("count=%d\t",count);
        count++;
    }
    printf("\ntransform success\n");
}

day3_第1张图片

你可能感兴趣的:(c语言)