IO进程练习---往文件中录入当前时间

2024-08-26 22:12

本文主要是介绍IO进程练习---往文件中录入当前时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 题目要求

编程读写一个文件test.txt,每隔1秒向文件中写入一行录入时间的数据,类似这样:

1  2007-7-30 15:16:42  

2  2007-7-30 15:16:43

该程序应该无限循环,直到按Ctrl-C中断程序。

再次启动程序写文件时可以追加到原文件之后,并且序号能够接续上次的序号,比如:

1  2007-7-30 15:16:42

2  2007-7-30 15:16:43

3  2007-7-30 15:19:02

4  2007-7-30 15:19:03

5  2007-7-30 15:19:04

思路:

  1. 打开文件fopen,循环往文件写内容
  2. 每隔1s写入一行,sleep(1);
  3. 计算文件行数,wc -l
  4. 计算当前时间,转换成年月日、时分秒,time,localtime

要实现这个练习,需要用到两个时间的函数

一个是time 

另一个是localtime

还有一个格式化向文件流中输入的函数 fprintf

1》time

man 2 time

time_t time(time_t *tloc);

如果tloc是空指针,直接返回当前时间。如果tloc 不是空指针,返回当前时间的同时,将返回值赋予tloc指向的内存空间。 

 2》localtime

man 3 localtime

struct tm *localtime(const time_t *timep);

返回值是结构体指针,所指结构体封装着年月日时分秒 

 先看一下这两个函数结合使用的结果


#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <string.h>int main(int argc, char const *argv[])
{time_t t;//定义一个 time_t 类型的变量,用来存放时间struct tm *time_p;//定义一个 tm (时间)结构体类型的指针time(&t);//将t转换成从1970年至今的秒数printf("秒数: %d\n",t);time_p = localtime(&t);//将这个秒数转换成年月日 时分秒的结构体printf("当前时间: %d-%d-%d  %d:%d:%d\n", time_p->tm_year + 1900, time_p->tm_mon + 1, time_p->tm_mday, time_p->tm_hour, time_p->tm_min, time_p->tm_sec);//将结构体内容打印出来
return 0;
}

 3》fprintf

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

格式化输出到流(stream)文件中,返回值是输出的字符数,发生错误时返回一个负值.

和 printf 的用法相似,只是printf是输出到标准输出中,fprintf是输出到文件流中

4》代码实现 

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <string.h>int main(int argc, char const *argv[])
{FILE *fp;//定义一个文件流char buf[32] = {};//定义一个数组,待用,后面用来计算行数fp = fopen("time.txt", "r+");//以r+ 方式(可读可写)打开文件time.txt,文件是自己建立的if (NULL == fp)//如果fopen返回NULL; 打开文件失败{printf("fopen lost\n");return -1;}printf("open success\n\n");time_t t;//定义一个 time_t 类型的变量,用来存放时间struct tm *time_p;//定义一个 tm (时间)结构体类型的指针int line = 0;//定义一个变量来表示行数//循环fgets读文件, 只要读到就判断是否有\n, 如果有就累加行数while (fgets(buf, 32, fp) != NULL){if (buf[strlen(buf) - 1] == '\n')line++;//计算当前文件中的行数}//这一步的目的是为了当停止一次输入之后,让下一次输入能紧跟在上一次行数继续输入while (1)//死循环{line++;//让行数加一,刚开始行数初始化为0了,所以先加一time(&t);//转换成秒数time_p = localtime(&t);//转换成年月日时分秒fprintf(fp, "%d %d-%d-%d  %d:%d:%d\n", line,time_p->tm_year + 1900, time_p->tm_mon + 1, time_p->tm_mday, time_p->tm_hour, time_p->tm_min, time_p->tm_sec);//将结构体的年月日时分秒输出到文件流中fflush(NULL);//强制清空缓存区,输出内容sleep(1);//延迟一秒输出}fclose(fp);//关闭流文件return 0;
}

 5》运行结果


今天的分享就到这里结束啦,如果有哪里写的不好的地方,请指正。
如果觉得不错并且对你有帮助的话请给个三连支持一下吧!

这篇关于IO进程练习---往文件中录入当前时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109824

相关文章

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于