使用fread和fwrite完成两个图片文件的拷贝
#include <myhead.h>
#define high 541
#define wide 541
int main(int argc, const char *argv[])
{//以只读的方式打开图片文件1.bmpFILE *fp = NULL;if((fp = fopen("./1.bmp", "r")) == NULL){perror("fopen error");return -1;}//以只写的方式打开文件work1.bmpFILE *fq=NULL;if((fq= fopen("./work1.bmp", "w")) == NULL){perror("fopen error");return -1;}//先复制位图文件头和位图信息图unsigned char head[54];fread(head,1,sizeof(head),fp);fwrite(head,1,sizeof(head),fq);//将光标定位在图像像素矩阵位置fseek(fp,54,SEEK_SET);//将光标定位在图像像素矩阵位置fseek(fq,54,SEEK_SET);unsigned char str[3]="";//定义一个容器用来储存和读取像素//循环取出1.bmp的像素存入work1.bmp中int res;while((res=fread(str,1,sizeof(str),fp))>0){fwrite(str,1,res,fq);//写入像素}fclose(fp);fclose(fq);return 0;
}
现象展示:
使用read、write完成两个图片文件的拷贝
#include <myhead.h>
#define high 653
#define wide 653
int main(int argc, const char *argv[])
{//以只读的方式打开图片文件2.bmpint fp=-1;if((fp=open("./2.bmp",O_RDONLY))==-1){perror("open error");return -1;}//以只写的方式打开文件work2.bmpint fq=-1;if((fq=open("./work2.bmp",O_WRONLY|O_CREAT|O_TRUNC,0666))==-1){perror("fopen error");return -1;}//先复制位图文件头和位图信息图unsigned char head[54];read(fp,head,sizeof(head));write(fq,head,sizeof(head));//将光标定位在图像像素矩阵位置lseek(fp,54,SEEK_SET);//将光标定位在图像像素矩阵位置lseek(fq,54,SEEK_SET);unsigned char str[3]={0,0,0};//定义一个容器用来储存和读取像素//循环取出2.bmp的像素存入work2.bmp中int res;while((res=read(fp,str,sizeof(str)))!=0){write(fq,str,res);//写入像素}close(fp);close(fq);return 0;
}
效果图
3> 将时间在文件中跑起来
1、17:30:41
2、17:30:42
3、17:30:43
键入ctrl+c,结束进程后
...
4、17:35:28
5、17:35:29
#include <myhead.h>
#include <time.h>
int main(int argc, const char *argv[])
{ FILE *fp=NULL;char time_buf[100]="";//存储时间格式串的容器char str[100]="";char ptr[100]="";//存储从文件中读取的时间串while (1){//以追加的方式打开时间文件if((fp=fopen("./time.txt","a+"))==NULL){perror("fopen error");return -1;}time_t sysTime=time(NULL);//获取时间秒数struct tm *t=localtime(&sysTime);//通过秒数获取时间结构体指针//查找最后一个行号的位置int count=1;while(fgets(str,sizeof(str),fp)!=NULL){count++;}//将时间的格式串储存到一个数组中snprintf(time_buf, sizeof(time_buf), "%2d、%2d:%2d:%2d\n", count,t->tm_hour, t->tm_min, t->tm_sec);//写入行号和时间串fwrite(time_buf,strlen(time_buf),1,fp);//移动光标至读取时间位置fseek(fp,-strlen(time_buf),SEEK_END);fread(ptr,strlen(time_buf),1,fp);printf("%s\n",ptr);sleep(1); fclose(fp);}return 0;
}
效果图:
思维导图