坐牢十八天 20240729(IO)

news2024/9/17 7:14:31

一.笔记

1. 有关系统时间的函数

1> 有关时间的函数

#include <time.h>

time_t time(time_t *tloc);

功能:获取系统时间,从1970年1月1日0时0分0秒,到目前累计的秒数

参数:用于接收的秒数

返回值:秒数使用方式:

1、time_t sys_time = time(NULL);

2、time_t sys_time = 0; time(&sys_time);

struct tm *localtime(const time_t *timep);

功能:将time_t 秒数,转换为时间类型的结构体

参数:time_t 类型的时间秒数

返回值:时间结构体

struct tm {

int tm_sec; /* 秒数 */

int tm_min; /* 分钟 (0-59) */

int tm_hour; /* 小时 (0-23) */

int tm_mday; /* 月中天数 (1-31) */

int tm_mon; /* 月份+1 (0-11) */

int tm_year; /* 年 + 1900 */

int tm_wday; /* 周中天数 (0-6, Sunday = 0) */

int tm_yday; /* 年中天数 (0-365, 1 Jan = 0) */

int tm_isdst; /* Daylight saving time */

};

2. sprintf\snprintf:将格式串转换为字符串

int sprintf(char *str, const char *format, ...);

功能:将格式串转换为字符串放入字符数组中

参数1:存放格式串的字符数组

参数2:格式串,可以包含格式控制符

参数3:可变参数,根据参数2中的格式控制符个数确定

返回值:成功返回转换的字符个数,失败返回-1

int snprintf(char *str, size_t size, const char *format, ...);

该函数比sprintf更加安全,因为多了一个size的限制

3. fprintf\fscanf:格式化读写函数

int fprintf(FILE *stream, const char *format, ...);

功能:向指定文件中写入一个格式串

参数1:文件指针

参数2:格式串,可以包含格式控制符

参数3:可变参数,根据参数2而定

返回值:成功返回写入文件的字符实际个数,失败返回-1

int fscanf(FILE *stream, const char *format, ...);

功能:将从文件中读取一些数据,放入到程序中来

参数1:文件指针

参数2:格式控制串

参数3:根据参数2而定

返回值:成功返回读取数据的个数,失败返回EOF并置位错误码

4. fprintf\fscanf:格式化读写函数

int fprintf(FILE *stream, const char *format, ...);

功能:向指定文件中写入一个格式串

参数1:文件指针

参数2:格式串,可以包含格式控制符

参数3:可变参数,根据参数2而定

返回值:成功返回写入文件的字符实际个数,失败返回-1

int fscanf(FILE *stream, const char *format, ...);

功能:将从文件中读取一些数据,放入到程序中来

参数1:文件指针

参数2:格式控制串

参数3:根据参数2而定

返回值:成功返回读取数据的个数,失败返回EOF并置位错误码

5.fread\fwrite:模块化读写

#include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:对文件进行模块化读写操作

参数1:要写入(存放数据)数据的起始地址

参数2:每一项的大小

参数3:总的项数

参数4:文件指针

返回值:成返回读取的项数值,失败返回小于项数的值

注意:fread并不能区分是文件结束了,还是因为出现错误了,需要使用feof或ferror来区分

6.关于文件光标的函数

#include <stdio.h>

int fseek(FILE *stream, long offset, int whence);

功能:对文件光标进行偏移

参数1:文件指针

参数2:偏移量 >0:表示向后偏移 =0:表示不偏移 <0:表示向前偏移

参数3:偏移位置

SEEK_SET:文件开头

SEEK_END:文件结束

SEEK_CUR:当前位置

返回值:成功返回0,失败返回-1并置位错误码

long ftell(FILE *stream);

功能:返回文件当前位置(就是当前位置相对于文件起始位置的偏移字节数) 参数:文件指针 返回值:偏移字节数

常用:fseek(fp, 0, SEEK_END);

ftell(fp); //文件大小

void rewind(FILE *stream);

功能:将光标定位到开头 类似于 fseek(fp, 0, SEEK_SET)

参数:文件指针

返回值:无 

6. 思考:

使用a或者a+的形式打开文件是,对文件光标进行偏移时是否效果?

答:对于a而言,不能进行偏移其写光标,总是在结尾写

对于a+而言,其写光标不能偏移,但是读光标可以偏移

二.作业

1> 写一个日志文件,将程序启动后,每一秒的时间写入到文件中

#include <myhead.h>
int main(int argc, char const *argv[])
{
    FILE *fp=NULL;
    if ((fp=fopen("./time1.txt","a"))==NULL)
    {
       perror("fopen error\n");
       return -1;
    }
    char buf1[128]="";
    char buf2[128]="";
    time_t sys_time;
    struct tm*time_ptr;
    int count=0;
    while (1)
    {
        sys_time=time(NULL);
        time_ptr=localtime(&sys_time);
        sprintf(buf1,"%4d-%2d-%2d %2d:%2d:%2d\n",\
        time_ptr->tm_year+1900,\
        time_ptr->tm_mon+1,\
        time_ptr->tm_mday,\
        time_ptr->tm_hour,\
        time_ptr->tm_min,\
        time_ptr->tm_sec);
        if (strcmp(buf2,buf1))
        {
            count++;
            fgets(buf1,128,fp);
            fprintf(fp,"%d->",count);
            fputs(buf1,fp);
            strcpy(buf2,buf1);
        } 
    }
    fclose(fp);
    return 0;
}

2> 使用fread、fwrite完成两个文件的拷贝

不允许只读写一次

#include <myhead.h>
int main(int argc, char const *argv[])
{
    if (argc!=3)
   {
      printf("input file error!!!\n");
      printf("usage:./a.out filename\n");
      return -1;
   }
    FILE*fp1=NULL;
    FILE*fp2=NULL;
    if (NULL==(fp1=fopen(argv[1],"r"))||NULL==(fp2=fopen(argv[2],"w")))
    {
      printf("拷贝失败\n");
      return -1;
    }
    char buf[1]="";
    while (1)
    {
      int res=fread(buf,1,1,fp1);//从fp1中读取文件
      if (res<=0)//表示文件读取数据结束
      {
        break;
      }
      fwrite(buf,1,1,fp2);
    }
   fclose(fp1);
   fclose(fp2);
   printf("拷贝成功\n");
}

3> 实现对bmp图像的读写操作

#include<myhead.h>
int main(int argc, const char *argv[])
{
    //定义文件指针
    FILE *fp = NULL;
    if((fp = fopen("./gg.bmp", "r+")) == NULL)
    {
        perror("fopen error");
        return -1;
    }
    //获取文件大小
    int img_size = 0;
    //将文件光标偏移2个字节
    fseek(fp, 2, SEEK_SET);
    //读取4字节的内容
    fread(&img_size, sizeof(img_size), 1, fp);

    printf("size = %d\n", img_size);        //图像大小
    //从头向后偏移54字节后,就是图像数据
    fseek(fp, 54, SEEK_SET);
    //定义一个像素
    unsigned char color[3] = {0, 0, 255};     //正红色
    for(int i=0; i<960/2; i++)          //外行
    {
        for(int j=0;j<1280; j++)       //内列
        {
            fwrite(color, sizeof(color), 1, fp);
        }
    }
    //关闭文件
    fclose(fp);

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每日刷题】Day89

【每日刷题】Day89 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 2. 155. 最小栈 - 力扣&#xff0…

Open3D 计算点云质心

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、概述 1.1原理 在Open3D中&am…

成为git砖家(8): 使用 git log 查询范围内的 commit

文章目录 1. 查询 git log 的文档2. 不带任何参数: git log 啥意思&#xff1f;3. git log 最主要功能是什么&#xff1f;4. git log <commit1>..<commit2> 什么意思5. 查看最近n次commit6. References 1. 查询 git log 的文档 git help log --web市面上针对 git …

从善如流之您最亲近人之善,肯出力之象-下学而上达

您最亲近人之善&#xff0c;肯出力之象&#xff0c;就是那个爬&#xff0c;甚至于跪倒在地上&#xff0c;抹那个下水井子。这或许就是那个马云大佬讲过的&#xff0c;就是从您最近距离&#xff0c;身边的人学习。人家为啥做的好&#xff0c;出色&#xff1f;而且您是一母同胞之…

太坑了!RabbitMQ+PHP开发的辛酸经历

博主介绍&#xff1a;全网粉丝10w、CSDN合伙人、华为云特邀云享专家&#xff0c;阿里云专家博主、星级博主&#xff0c;51cto明日之星&#xff0c;热爱技术和分享、专注于Java技术领域 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅…

设计模式:模板方法模式:封装不变,扩展可变

目录 一、模板方法模式的定义与结构 二、模板方法模式的优点 三、模板方法模式的示例 示例一&#xff1a; 示例二&#xff1a; 四、总结 在软件开发中&#xff0c;设计模式是解决常见问题的可复用方案。其中&#xff0c;模板方法模式是一种行为型设计模式&#xff0c;它在不…

lora微调Qwen模型全流程

LoRA 微调 Qwen 模型的技术原理概述 LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于大模型高效微调的方法。通过对模型参数进行低秩分解和特定层的微调&#xff0c;LoRA 能在保持模型性能的前提下显著减少训练所需的参数量和计算资源。接下来是对 LoRA 微调 Qwen…

Matlab编程资源库(9)数据插值与曲线拟合

一、一维数据插值 在MATLAB中&#xff0c;实现这些插值的函数是interp1&#xff0c;其调用格式为&#xff1a; Y1interp1(X,Y,X1,method) 函数根据X,Y的值&#xff0c;计算函数在X1处的值。X,Y是两个等长的已知向量&#xff0c;分别描述采样点和样本值&#xff0c;X1是一个向量…

【机器学习基础】初探机器学习

【作者主页】Francek Chen 【专栏介绍】⌈Python机器学习⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;依赖于强大的开…

vue项目引入live2d保姆级教程--web端、多种方法

一、自建live2d运行 1、选择SDK——live2d Cubism SDK &#xff08;1&#xff09;链接&#xff1a;Live2D Cubism SDK | Live2D Cubism 打开网站&#xff0c;它长这样&#xff1a; &#xff08;2&#xff09;选择web &#xff0c;到下个页面 &#xff08;3&#xff09;下…

Power Tower

Problem - D - Codeforces 牛客和codeforce都有 递归处理l,r&#xff0c;终点是lr && mod1 用扩展欧拉定理 // Problem: D. Power Tower // Contest: Codeforces - Codeforces Round 454 (Div. 1, based on Technocup 2018 Elimination Round 4) // URL: https://c…

Linux基础操作指令

Linux的操作特点&#xff1a;纯命令行&#xff08;虽然也有图形化界面&#xff0c;但主要是工程师使用&#xff0c;意义不大&#xff09; windows的操作特点&#xff1a;图形化界面&#xff08;也有纯命令行的形式&#xff0c;但其更贴近大众&#xff0c;命令行学习成本高&…

用Python打造精彩动画与视频1.2 安装Python和基本配置

1.2 安装Python和基本配置 在本章节中&#xff0c;我们将介绍如何在不同操作系统上安装Python&#xff0c;并进行基本配置&#xff0c;以便你能够顺利开始使用Python进行编程和多媒体创作。 1.2.1 Python的安装 Python有多个版本&#xff0c;目前主要使用Python 3版本。以下…

贪心加暴力枚举

数据范围只有 1 0 5 10^5 105所以我们可以直接暴力枚举&#xff0c;然后我们知道假操作一定是在最开始进行&#xff0c;至于加多少次我们可以直接枚举 class Solution { public:int minOperations(int k) {// 只可能先加后叠加if (k 1) return 0;int ans 0x7ffffff;int now…

Windows FreeCAD 导入ODA File Converter 插件

0. 背景 需要打开.dwg 格式的文件&#xff0c;AutoCAD 又要收费&#xff0c;所以使用法国的 FreeCAD&#xff0c; 安装完成打开.dwg 格式的文件时&#xff0c;出现问题如图所示&#xff1a; 1.下载插件 插件 ODA File Converter 网址 windows 插件在最下面&#xff1a; 2…

Android 性能优化(二):LeakCanary【用于分析代码是否存在内存泄漏】程序无响应

目录 1&#xff09;内存相关的五种常见问题 2&#xff09;内存溢出和内存泄漏 3&#xff09;LeakCanary是什么? 4&#xff09;LeakCanary如何使用&#xff0c;如何分析&#xff1f; 5&#xff09;LeakCanary监测的内容 提问&#xff1a;程序有时候很卡&#xff0c;经常会出现…

再论pg归档日志的设置

用过ORACLE的朋友&#xff0c;第一次设置 PG的归档参数&#xff0c;如下&#xff1a; 。。。 wal_level replica archive_mode on archive_command test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f 。。。 对于归档&#xff0c;还要用…

ConvGRU原理与开源代码

ConvGRU 1. 算法简介与应用场景2. 算法原理2.1 GRU基础2.2 ConvGRU原理2.2.1 ConvGRU的结构2.2.2 卷积操作的优点 2.3 GRU与ConvGRU的对比分析2.4 ConvGRU的应用 3. PyTorch代码 仅需要网络源码的可以直接跳到末尾即可 需要ConvLSTM的可以参考我的另外一篇博客&#xff1a;小白…

Halcon Blob分析

斑点分析的思路&#xff1a;在图像中&#xff0c;相关对象的像素可以通过其灰度值来识别。例如下图的组织颗粒。这些颗粒是凉的&#xff0c;而液体是暗的&#xff0c;通过选择明亮像素(阈值)&#xff0c;可以很容易地检测到颗粒。在需要应用中&#xff0c;这种简单的暗像素和亮…

成像光学:LCD的工作原理与结构图解

一、主流显示面板技术&#xff1a;LCD&#xff0c;OLED&#xff0c;MicroLED 二、主流显示屏的发展趋势 三、LCD堆叠结构&#xff08;以比较流行的TFT-LCD为例&#xff09; 沿光路方向介绍&#xff1a;背光&#xff0c;下偏光片&#xff08;polarizer&#xff09;&#xff0c;…