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

相关文章

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

C#如何优雅地取消进程的执行之Cancellation详解

《C#如何优雅地取消进程的执行之Cancellation详解》本文介绍了.NET框架中的取消协作模型,包括CancellationToken的使用、取消请求的发送和接收、以及如何处理取消事件... 目录概述与取消线程相关的类型代码举例操作取消vs对象取消监听并响应取消请求轮询监听通过回调注册进行监听使用Wa

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级