01.思维导图

02.将当前的时间写入到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

#include <25051head.h>
//1.封装时间函数
int get_currenttime(struct tm *s)
{time_t t;//1.计算秒数,存到t变量time(&t);//printf("t=%ld\n",t);//2.转换年月日时分秒struct tm *temp=localtime(&t);if(NULL==temp){ERRLOG("localtime_error");return -1;}//将时间信息复制到传入结构体中*s=*temp;//成功
#if 0printf("%d-%02d-%2d  %02d:%02d:%02d\n",\s->tm_year+1900,s->tm_mon+1,\s->tm_mday,s->tm_hour,s->tm_min,s->tm_sec);
#endifreturn 0;
}
//2.封装获取行号函数
int get_linenum(FILE* fp)
{int line_count=0;//记录当前文件指针位置long current_pos=ftell(fp);//将文件指针移动到文件开头fseek(fp,0,SEEK_SET);char ch;while((ch=fgetc(fp))!=EOF){if(ch=='\n'){line_count++;}}//恢复指针的位置fseek(fp,current_pos,SEEK_SET);return line_count+1;
}
int main(int argc, const char *argv[])
{//1.打开文件FILE* fp=fopen("./mytime.txt","a+");if(NULL==fp){ERRLOG("fopen_error");return -1;}char buf[128]="";//char last_line[128]="";while(1){//获取行号int line_number=get_linenum(fp);//获取时间结构体struct tm time_info;if(get_currenttime(&time_info)!=0){printf("get_currenttime error");fclose(fp);return -1;}//2.写文件snprintf(buf,sizeof(buf)-1,"%d:%d-%02d-%02d  %02d:%02d:%02d\n",\line_number,time_info.tm_year+1900,time_info.tm_mon+1,\time_info.tm_mday,time_info.tm_hour,time_info.tm_min,time_info.tm_sec);size_t res=fwrite(buf,1,strlen(buf),fp);if(res<strlen(buf)){printf("fwrite_error");fclose(fp);return -1;}//偏移光标fseek(fp,0,SEEK_SET);//3.读文件
#if 0while(1){//清零		memset(buf,0,sizeof(buf));res=fread(buf,1,sizeof(buf)-1,fp);if(res>0){fprintf(stdout,"%s",buf);}if(feof(fp)){//printf("读取到文件结尾..\n");break;}if(ferror(fp)){printf("fread文件读取失败.\n");break;}}
#endiffprintf(stdout,"%s",buf);sleep(1);}	//4.关闭文件fclose(fp);fp=NULL;return 0;
}
#ifndef __25051HED_H__
#define __25051HED_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <sys/types.h>//引入open函数
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>//引入 getdtablesize函数,获取文件描述符个数,包含close函数
#include <time.h>#define ERRLOG(msg) do{printf("__%d__",__LINE__);fflush(stdout);perror(msg);return -1;}while(0)  
#endif                                                                                            

03.使用文件IO函数实现图片的拷贝

#include <25051head.h>
int main(int argc, const char *argv[])
{//1.打开文件umask(0);//打开当前目录下的0001.jpg文件,以w方式打开int src_fd=open("./0001.jpg",O_RDONLY);if(-1==src_fd){ERRLOG("opensrc_error");}printf("src_fd=%d\n",src_fd);//打开目标图片文件,以读写、创建、清零模式打开int dest_fd=open("./0002.jpg",O_RDWR|O_CREAT|O_TRUNC,0777);if(-1==dest_fd){ERRLOG("opendest_error");close(src_fd);}printf("dest_fd=%d\n",dest_fd);printf("opendest_success..\n");//2.拷贝数据char buf[128];ssize_t ret;while(1){//从源数据读取数据ret=read(src_fd,buf,sizeof(buf)-1);if(-1==ret){ERRLOG("read_error");}else if(0==ret){printf("end of source_image..\n");break;}//将读取的数据写入目标文件ssize_t write_ret=write(dest_fd,buf,ret);if(-1==write_ret){ERRLOG("write_error");}else if(write_ret!=ret){fprintf(stderr,"写入的超过读取的\n");break;}}//3.关闭文件if(-1==close(src_fd)){ERRLOG("关闭源文件失败");}if(-1==close(dest_fd)){ERRLOG("关闭目标文件失败");}printf("close_success..\n");return 0;
}

04.使用文件IO读取图片 文件大小、文件偏移量,宽度,高度,像素


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

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

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

#include <25051head.h>
int main(int argc, const char *argv[])
{//1.打开文件//umask(0);//2.以只读的方式打开图片文件int fd=open("./123.bmp",O_RDONLY);if(-1==fd){ERRLOG("open_error");}//1.获取123.bmp文件的大小int buf;off_t size=lseek(fd,2,SEEK_SET);read(fd,&buf,4);printf("图片123.bmp的大小为:%d\n",buf);//2.获取文件偏移量//偏移光标到起始位置lseek(fd,10,SEEK_SET);read(fd,&buf,4);printf("图片123.bmp的文件偏移量为%d\n",buf);//3.获取宽度lseek(fd,18,SEEK_SET);read(fd,&buf,4);printf("图片123.bmp的宽度为%d\n",buf);//4.获取宽度lseek(fd,22,SEEK_SET);read(fd,&buf,4);printf("图片123.bmp的高度为%d\n",buf);//5.获取图片像素if(-1==close(fd)){ERRLOG("close_error");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89317.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89317.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89317.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg中TS与MP4格式的extradata差异详解

在视频处理中&#xff0c;extradata是存储解码器初始化参数的核心元数据&#xff0c;直接影响视频能否正确解码。本文深入解析TS和MP4格式中extradata的结构差异、存储逻辑及FFmpeg处理方案。 &#x1f4cc; 一、extradata的核心作用 extradata是解码必需的参数集合&#xff0…

【CV数据集介绍-40】Cityscapes 数据集:助力自动驾驶的语义分割神器

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

SAP月结问题9-FAGLL03H与损益表中研发费用金额不一致(FAGLL03H Bug)

SAP月结问题9-FAGLL03H与损益表中研发费用金额不一致(S4 1709) 财务反馈&#xff0c;月结后核对数据时发现FAGLL03H导出的研发费用与损益表中的研发费用不一致&#xff0c;如下图所示&#xff1a; 对比FAGLL03H与损益表对应的明细&#xff0c;发现FAGLL03H与损益表数据存在倍数…

HTML inputmode 属性详解

inputmode 是一个 HTML 属性&#xff0c;用于指定用户在编辑元素或其内容时应使用的虚拟键盘布局类型。它主要影响移动设备和平板电脑的输入体验。 语法 <input inputmode"value"> <!-- 或 --> <textarea inputmode"value"></texta…

软考中级【网络工程师】第6版教材 第1章 计算机网络概述

考点分析&#xff1a; 本章重要程度&#xff1a;一般&#xff0c;为后续章节做铺垫&#xff0c;有总体认识即可&#xff0c;选择题1-2分高频考点&#xff1a;OSI模型、TCP/IP模型、每个层次的功能、协议层次新教材变化&#xff1a;删除网络结构、删除X.25、更新互联网发展【基本…

Mysql事务与锁

数据库并发事务 数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。为了解决这些并发事务的问题&#xff0c;数据库设计了事务隔离机制、锁机制、MVCC多…

Bilibili多语言字幕翻译扩展:基于上下文的实时翻译方案设计

Bilibili多语言字幕翻译扩展&#xff1a;基于上下文的实时翻译方案设计 本文介绍了一个Chrome扩展的设计与实现&#xff0c;该扩展可以为Bilibili视频提供实时多语言字幕翻译功能。重点讨论了字幕翻译中的上下文问题及其解决方案。 该项目已经登陆Chrome Extension Store: http…

热血三国野地名将列表

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>野地名将信息表</title><style>tabl…

【记录】Word|Word创建自动编号的多级列表标题样式

文章目录 前言创建方式第一种方法&#xff1a;从“定义多级列表”中直接绑定已有样式第二种方法&#xff1a;通过已有段落创建样式&#xff0c;再绑定补充说明 尾声 前言 这世上荒唐的事情不少&#xff0c;但若说到吊诡&#xff0c;Word中的多级列表样式设定&#xff0c;倒是能…

使用mavros启动多机SITL仿真

使用mavros启动多机SITL仿真 方式1&#xff1a;使用roslaunch一键启动Step1&#xff1a;创建一个新的 ROS 包或放到现有包里Step2&#xff1a;编辑 multi_mavros.launchStep3&#xff1a;构建工作空间并 source 环境Step4&#xff1a;构建工作空间并 source 环境 方式2&#xf…

Flutter 网络栈入门,Dio 与 Retrofit 全面指南

面向多年 iOS 开发者的零阻力上手 写在前面 你在 iOS 项目中也许习惯了 URLSession、Alamofire 或 Moya。 换到 Flutter 后&#xff0c;等价的「组合拳」就是 Dio Retrofit。 本文将带你一次吃透两套库的安装、核心 API、进阶技巧与最佳实践。 1. Dio&#xff1a;Flutter 里的…

工作室考核源码(带后端)

题目内容可更改 下载地址:https://mcwlkj.lanzoub.com/iUF3z300tgfe 如图所示

数字孪生技术为UI前端提供全面支持:实现产品的可视化配置与定制

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 一、引言&#xff1a;数字孪生驱动产品定制的技术革命 在消费升级与工业 4.0 的双重驱动下&a…

通往物理世界自主智能的二元实在论与罗塞塔协议

序章&#xff1a;AI的“两种文化”之争——我们是否在构建错误的“神”&#xff1f; 自诞生以来&#xff0c;人工智能领域始终存在着一场隐秘的“两种文化”之争。一方是符号主义与逻辑的信徒&#xff0c;他们追求可解释、严谨的推理&#xff0c;相信智能的核心在于对世界规则…

探索 AI 系统提示与模型资源库:`system-prompts-and-models-of-ai-tools`

在当今的人工智能领域,系统提示和工具模型的优化与应用对于提升 AI 助手的性能和响应质量至关重要。x1xhlol 开源的 system-prompts-and-models-of-ai-tools 仓库为开发者们提供了一个丰富的资源集合,涵盖了多种 AI 工具的系统提示、工具和模型。 仓库概述 这个仓库包含了超…

城市灯光夜景人像街拍摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 “城市灯光夜景人像街拍摄影后期 Lr 调色”&#xff0c;主要是利用 Lightroom 软件&#xff0c;对城市夜景中灯光下的人像街拍照片进行处理。通过调整色彩平衡、明暗对比和细节质感&#xff0c;强化夜景灯光的绚丽感&#xff0c;突出人像主体&#xff0c;同时协调人物…

JavaScript中的call、apply、bind:用法、实现与区别详解(面试常见)

# JavaScript中的call、apply、bind&#xff1a;用法、实现与区别详解## 核心概念 这三个方法都用于改变函数执行时的this指向&#xff0c;是JavaScript中函数上下文操作的核心API。## 1. 基本用法对比### call方法 javascript function.call(thisArg, arg1, arg2, ...)特点&am…

使用vue开发浏览器chrome插件教程,及之间的消息通信

基本介绍 开发浏览器插件&#xff0c;首先需要先了解他的结构&#xff0c;浏览器扩展通常包括以下几个部分 ├── manifest.json ├── package.json ├── vite.config.js ├── src ├── background │ └── index.js ├── content │ └── content.js ├── …

论文笔记(八十八)MLCVNet: Multi-Level Context VoteNet for 3D Object Detection

MLCVNet: Multi-Level Context VoteNet for 3D Object Detection 文章概括摘要I. 引言2. 相关工作2.1. 基于点云的 3D 目标检测2.2. 上下文信息 3. 方法3.1. VoteNet3.2. PPC 模块3.3. OOC 模块3.4. GSC 模块 4. 结果与讨论4.1. 数据集4.2. 训练细节4.3. 与最先进方法的比较4.4…

Redis初识第四期----Hash的命令和应用场景

首先为了区分Redis的键值对存储的key-value&#xff0c;Hash中的键值对称为field-value。 命令 1.Hset Hset key field value [field value] 返回值为设置成功的field-value的个数。 2.Hget Hget key field 返回为value 3.Hexists Hexists key field 判断是否存在&a…