第一题
题目:
用read write函数实现文件拷贝。
代码:
#include <myhead.h>
int main(int argc, const char *argv[])
{
int fd1 = open("./1.txt",O_RDONLY);
int fd2 = open("./2.txt",O_WRONLY|O_CREAT,0777);
if( fd1<0 || fd2<0)
{
perror("open");
return -1;
}
char buf[8];
ssize_t res;
while(1)
{
res = read(fd1,buf,sizeof(buf));
if(0 == res)
{
break;
}
write(fd2,buf,res);
bzero(buf,sizeof(buf));
}
close(fd1);
close(fd2);
return 0;
}
运行结果:
第二题
题目:
要求将当前路径下,所有文件的权限及最后一次的访问时间提取出来,写入到file.txt中!
代码:
#include <myhead.h>
int main(int argc, const char *argv[])
{
//打开当前文件夹
DIR *dirp = opendir("./");
if (NULL == dirp)
{
perror("opendir");
return -1;
}
struct dirent *rdirp;
//打开file.txt
FILE *fp = fopen("./file.txt", "a");
if (NULL == fp)
{
perror("fopen");
return -1;
}
int res;
struct stat statbuf;
struct tm *info;
while (1)
{
//读取文件夹
rdirp = readdir(dirp);
if (NULL == rdirp)
{
break;
}
//读取文件信息
res = stat(rdirp->d_name, &statbuf);
if (-1 == res)
{
perror("stat");
return -1;
}
// 转换时间
info = localtime(&statbuf.st_atime);
// 打印信息到文件
fprintf(fp,"%s\t0%o\t%d-%02d-%02d %02d:%02d:%02d\n",\
rdirp->d_name,(statbuf.st_mode & 0777) ,\
info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min,info->tm_sec);
}
fclose(fp);
closedir(dirp);
return 0;
}