当前位置: 首页 > news >正文

io标准函数和时间函数day2

  1. IO函数
    • fscanffprintf:用于文件读写,可处理不同数据类型。fprintf写入文件,fscanf从文件流指针读取数据。
    • fwritefread:用于二进制文件读写,能将不同数据类型转换为二进制形式处理。
    • sprintfsnprintf:将不同数据类型转换为字符串,snprintf可指定字符串长度防止越界。
    • bzeromemset:用于内存清0操作,memset还能实现清 -1 或其他字符。
    • 缓冲区
      • 全缓冲:对象为fopen打开文件返回的流指针,大小4096字节,有多种刷新机制(五种)。
      • 行缓冲:对象为stdinstdout,大小1024字节,刷新机制包括行满、fflush(七种)等。
      • 无缓冲:对象为stderr,大小为0,常用于打印错误信息。
    • 标准IO中的特殊流指针stdin(标准输入流)、stdout(标准输出流)、stderr(标准错误输出流),各有其作用及等价关系、文件描述符。
  2. 时间函数
    • time:获取当前到1970 - 1 - 1 0:0:0的时间差,单位为秒。
    • localtime:将time获取的秒数差转换为年月日时分秒的时间结构体。
  3. 作业
    • 将当前时间写入time.txt文件,支持断点续写。
                                                                                                                                                                   #include "headhs.h"
      #include <stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #include <time.h>  // 时间相关函数
      #include <unistd.h>  // 操作系统交互函数:sleep
      #include <signal.h>  // 信号处理相关函数:SIGINT// 信号处理函数
      void signal_c(int signal) 
      {printf("\n程序已终止\n");exit(0);  // 正常退出程序
      }int main(int argc, const char *argv[])
      {// 注册信号处理函数,捕获 Ctrl+C 信号signal(SIGINT, signal_c);// 打开文件(追加模式)FILE *fp = fopen("time.txt", "a+");if (fp == NULL){pt_er("无法打开文件");}// 获取当前行号int line_number = 0;char line[256];while (fgets(line, sizeof(line), fp)){line_number++;}// 无限循环,每秒写入当前时间while (1){time_t sec;time(&sec);  // 获取当前时间struct tm *t = localtime(&sec);  // 转换为本地时间if (t == NULL){pt_er("localtime error");  // 打印错误信息}// 格式化时间并写入文件fprintf(fp,"%d.%04d-%02d-%02d %02d:%02d:%02d\n",line_number + 1, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,t->tm_hour, t->tm_min, t->tm_sec);fflush(fp);  // 刷新缓冲区,确保数据写入文件// 在终端打印当前时间                                                        printf("%d.%04d-%02d-%02d %02d:%02d:%02d\n",line_number + 1, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,t->tm_hour, t->tm_min, t->tm_sec);line_number++;  // 行号加 1sleep(1);  // 休眠 1 秒}fclose(fp);return 0;
      }

    • 使用fwritefread函数实现图片拷贝。
      #include <stdio.h>
      #include <stdlib.h>
      #include "headhs.h"
      int main(int argc, const char *argv[])
      {// 检查命令行参数if (argc != 3){printf("用法: %s <源文件> <目标文件>\n",argv[0]);return 1;}// 打开源文件(二进制读取模式)FILE *src_file = fopen(argv[1], "rb");if (src_file == NULL){perror("无法打开源文件");return 1;}// 打开目标文件(二进制写入模式)FILE *dest_file = fopen(argv[2], "wb");if (dest_file == NULL){perror("无法打开目标文件");fclose(src_file);return 1;}// 定义缓冲区char buffer[1024];size_t bytes_read;// 逐块读取源文件并写入目标文件while ((bytes_read = fread(buffer, 1, sizeof(buffer), src_file))){fwrite(buffer, 1, bytes_read, dest_file);}// 检查是否读取完成if (feof(src_file)){printf("图片拷贝成功!\n");}else{perror("拷贝过程中发生错误");}// 关闭文件fclose(src_file);fclose(dest_file);return 0;
      }                                                                            

http://www.mrgr.cn/news/93108.html

相关文章:

  • 认识线程
  • SpaCy处理NLP的详细工作原理及工作原理框图
  • 《AJAX:前端异步交互的魔法指南》
  • Qt之QGraphicsView图像操作
  • Python----数据分析(Matplotlib三:绘图二:箱图,散点图,饼图,热力图,3D图)
  • day3作业
  • 【pta】1031 查验身份证
  • windows下使用Hyper+wsl实现ubuntu下git的平替
  • 多视图几何--2单应矩阵-2.0从0-1理解并计算单应矩阵
  • 测试工程师的DeepSeek提效4:测试效能提升应用
  • Keepalived 入门详解:高可用集群部署最佳实践!
  • ASP.NET Core JWT认证与授权
  • servlet tomcat
  • 使用ast获取py文件中所有函数与类名
  • 【每日学点HarmonyOS Next知识】Web Header更新、状态变量嵌套问题、自定义弹窗、stack圆角、Flex换行问题
  • VTP故障诊断与排除
  • 月结保障:回滚慢、行锁频发
  • 【零基础到精通Java合集】第二十一集:JVM常用垃圾收集器
  • 历年杭州电子科技大学计算机考研复试上机真题
  • PMP项目管理—资源管理篇—3.获取资源