作业
题目一
用read函数完成文件大小计算
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <head.h>
int main(int argc, const char *argv[])
{
int ft=open("./1.txt",O_RDONLY);
if(ft<0)
{
ERR_MSG("open");
return -1;
}
printf("open success!\n");
//用read读文件大小
int size = 0;
while(1)
{
char buf[20]="";
size_t res = 0;
res = read(ft,buf,sizeof(buf));
if(0==res)
break;
size+=res;
}
printf("size=%d\n",size);
int tf=close(ft);
if(tf<0)
{
ERR_MSG("close");
return -1;
}
printf("close success!\n");
return 0;
}
题目二
将课上的的文件权限提取修改成循环方式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <head.h>
void get_filePermission(mode_t m)
{
int i;
char p[9]="rwxrwxrwx";
for(i=0;i<9;i++)
{
if((m & (1<<(8-i)))!=0)
putchar(p[i]);
else
putchar('-');
}
putchar(10);
}
int main(int argc, const char *argv[])
{
struct stat buf;
if(stat("./1.txt",&buf)<0)
{
ERR_MSG("stat");
return -1;
}
//文件属性
printf("mode:0%o\n",buf.st_mode);
get_filePermission(buf.st_mode);
printf("link:%ld\n",buf.st_nlink);
printf("uid:%d\n",buf.st_uid);
printf("gid:%d\n",buf.st_gid);
printf("size:%ld\n",buf.st_size);
printf("time:%ld\n",buf.st_atime);
return 0;
}
思维导图