7月1日作业

思维导图


一、将当前的时间写入到time.txt的文件中,如果ctrl+c退出之后,在再次执行支持断点续写

1.2022-04-26 19:10:20

2.2022-04-26 19:10:21

3.2022-04-26 19:10:22

//按下ctrl+c停止,再次执行程序

4.2022-04-26 20:00:00

5.2022-04-26 20:00:01

代码

cpp 复制代码
#include <25041head.h>
int line();
int main(int argc, const char *argv[])
{
	int fd=open("./time.txt",O_RDWR | O_CREAT |O_APPEND,0777);
	time_t t;
	while(1)
	{
		time(&t);

		//转换为 xxxx年xx月xx日 xx时xx分xx秒
		struct tm *s=localtime(&t);
		if(NULL==s)
		{
			ERRLOG("localtime error..");
		}
		char now_time[128]="";
		lseek(fd,0,SEEK_END);
		snprintf(now_time,sizeof(now_time),"%d.%04d-%02d-%02d %02d:%02d:%02d\n",\
				line()+1,s->tm_year+1900,s->tm_mon+1,s->tm_mday,\
				s->tm_hour,s->tm_min,s->tm_sec);
		write(fd,now_time,strlen(now_time));
		fprintf(stdout,"%s",now_time);
		sleep(1);
	}
	return 0;
}

//计算当前行数
int line()
{
	FILE *fp=fopen("time.txt","r");
	if(NULL==fp)
	{
		ERRLOG("fopen error..");
	}
	int count=0;
	while(1)
	{
		char ch=fgetc(fp);
		if(EOF==ch)
		{
			break;
		}
		if('\n'==ch)
			count++;
	}
	if(EOF==fclose(fp))
	{
		printf("fclose error..\n");
		return -1;
	}
	return count;
}

运行结果


二、使用文件IO函数实现图片的拷贝

代码

cpp 复制代码
#include <25041head.h>

int main(int argc, const char *argv[])
{
    umask(0);
    int fd=open("./my.bmp",O_RDONLY);
    int fd_c=open("copy.bmp",O_RDWR | O_CREAT | O_TRUNC,0777);
    char buf[128]="";
    while(1)
    {
        memset(buf,0,sizeof(buf));
        int res=read(fd,buf,sizeof(buf)-1);
        if(res==0)
        break;                                                           
        if(-1==res)
        {
            ERRLOG("read error..");
        }
        write(fd_c,buf,sizeof(buf)-1);
    }
    if(-1==close(fd)&&-1==close(fd_c))
    {
        ERRLOG("close error..");
    }
    printf("图片拷贝成功!\n");
    return 0;
}

运行结果


三、使用文件IO读取图片 文件大小、文件偏移量,宽度,高度。

1.bmp文件头(bmp file header):提供文件的格式、大小等信息 (14字节)

2.位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息(50字节)

3.位图数据(bitmap data):就是图像数据啦

代码

cpp 复制代码
#include <25041head.h>

int main(int argc, const char *argv[])
{
    //打开bmp图片文件
    int fd=open("./my.bmp",O_RDONLY);
    if(-1==fd)
    {
        ERRLOG("open error..");
    }
    lseek(fd,2,SEEK_SET);
    //把光标定位到文件计算大小
    int size;
    if(-1== read(fd,&size,4))
    {
        ERRLOG("read error..");
    }
    printf("图片文件大小为%d字节\n",size);

    //把光标定位到记录文件偏移量的位置
    lseek(fd,10,SEEK_SET);
    int offset;
    if(-1==read(fd,&offset,4))
    {
        ERRLOG("read error..");
    }
    printf("图片文件偏移量为%d字节\n",offset);

    //宽度
    lseek(fd,18,SEEK_SET);
    int width;
    if(-1==read(fd,&width,4))
    {
        ERRLOG("read error..");
    }
    printf("图片宽度为%d像素\n",width);

    //高度,连续读取,无需偏移                           
    int height;
    if(-1==read(fd,&height,4))
    {
        ERRLOG("read error..");
    }
    printf("图片高度为%d像素\n",height);

    //关闭文件
    if(-1==close(fd))
    {
        ERRLOG("close error..");
    }
    return 0;
}

运行结果

相关推荐
Zuckjet_25 分钟前
开启 3D 之旅 - 你的第一个 WebGL 三角形
前端·javascript·3d·webgl
2401_8638014631 分钟前
探索 12 种 3D 文件格式:综合指南
前端·3d
机器学习之心32 分钟前
多目标鲸鱼优化算法(NSWOA),含46种测试函数和9个评价指标,MATLAB实现
算法·matlab·多目标鲸鱼优化算法·46种测试函数·9个评价指标
max5006001 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
callJJ1 小时前
从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(2)
java·开发语言·后端·spring·ioc·di
wangjialelele1 小时前
Linux中的线程
java·linux·jvm·c++
谷咕咕2 小时前
windows下python3,LLaMA-Factory部署以及微调大模型,ollama运行对话,开放api,java,springboot项目调用
java·windows·语言模型·llama
珍宝商店2 小时前
前端老旧项目全面性能优化指南与面试攻略
前端·面试·性能优化
bitbitDown2 小时前
四年前端分享给你的高效开发工具库
前端·javascript·vue.js
没有bug.的程序员2 小时前
MVCC(多版本并发控制):InnoDB 高并发的核心技术
java·大数据·数据库·mysql·mvcc