作业1:使用fread和fwrite完成两个图片文件的拷贝
代码:
#include <myhead.h>
int main(int argc, const char *argv[])
{
FILE *fp=NULL;
//以只读的形式打开文件
if(( fp=fopen("./dashuai.bmp","r")) == NULL){
perror("fopen error");
return -1;
}
//以只写的形式打开文件
FILE *fp1=NULL;
if(( fp1=fopen("./dashuai.bmp1","w")) == NULL){
perror("fopen error");
return -1;
}
//定义一个字符数组存储读取的图片信息
char str[128]="";
int res;
//遍历图片信息
while(1)
{
//从fp指向的文件中读取图片信息
res=fread(str,sizeof(str),1,fp);
//将读取的图片信息存储到fp1指向的文件中
fwrite(str,sizeof(str),res,fp1);
//文件读取结束时跳出循环
if(feof(fp)){
break;
}
}
//关闭文件
fclose(fp);
fclose(fp1);
return 0;
}
效果图:
作业2:使用read、write完成两个图片文件的拷贝
代码:
#include <myhead.h>
int main(int argc, const char *argv[])
{
//定义文件描述符变量
int fd=-1;
//打开目标文件
if((fd=open("./xingxue.bmp",O_RDONLY))==-1){
perror("open error");
return -1;
}
//打开拷贝文件
int fd1=-1;
if((fd1=open("./xingxue.bmp1",O_WRONLY | O_CREAT | O_TRUNC,0664)) == -1){
perror("open error");
return -1;
}
//定义字符数组存储读取的数据
char buf[128]="";
int res=0;
//遍历图片信息
while(1)
{
res=read(fd,buf,sizeof(buf));
if(res==0){
break;
}
write(fd1,buf,sizeof(buf));
}
//关闭文件
close(fd);
close(fd1);
return 0;
}
效果图:
作业3:将时间在文件中跑起来
代码:
#include <myhead.h>
int main(int argc, const char *argv[])
{
//打开文件
int fd=-1;
if((fd=open("./time.txt",O_RDWR | O_APPEND | O_CREAT,0664)) == -1){
perror("open error");
return -1;
}
//将获取的时间写入文件中
char buf[128]="";
//获取行号
int line=1;
char s[10]="";
//遍历文件
while(1)
{
int res=read(fd,s,sizeof(s));
if(res==0){//文件结束,跳出循环
break;
}else if(s[strlen(s)-1]=='\n'){//遇到换行,行数++
line++;
}
}
//循环获取时间
while(1)
{
//获取时间的秒数
time_t sysTime=time(NULL);
//通过秒数获取时间结构体指针
struct tm *t=localtime(&sysTime);
//将时间的格式串存储到数组中
snprintf(buf,sizeof(buf),"%d、%2d:%2d:%2d\n",line++,t->tm_hour,t->tm_min,t->tm_sec);
//将数组中的时间写入文件中
write(fd,buf,sizeof(buf));
//在终端显示时间
printf("%s",buf);
sleep(1);
}
//关闭文件
close(fd);
return 0;
}
效果图: