c语言 - 实现每隔1秒向文件中写入当前系统时间
作者:小教学发布时间:2023-10-04分类:程序开发学习浏览:101
导读:实现思路主要是通过库函数和结构体获取当前系统时间(年月日和时分秒)保存到变量里,然后通过格式化输出函数将当前系统时间输出到文件中去。但是需要注意的是题目要求每隔1s对...
实现思路
主要是通过库函数和结构体获取当前系统时间(年月日和时分秒)保存到变量里,然后通过格式化输出函数将当前系统时间输出到文件中去。
但是需要注意的是题目要求每隔 1 s对系统时间进行输出,所以需要加入 sleep()函数进行调整 ,而且如果加入 sleep() 函数还想要输出数据到文件中的话是必须要在每一次输出数据后刷新缓冲区的。
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
FILE *fp;
time_t current_time;
struct tm *local_time;
if((fp = fopen("test.txt", "w")) == NULL)
{
perror("fopen");
}
int i = 0;
while (1)
{
time(¤t_time);
local_time = localtime(¤t_time);
int year = local_time->tm_year + 1900;
int month = local_time->tm_mon + 1;
int day = local_time->tm_mday;
int hour = local_time->tm_hour;
int minute = local_time->tm_min;
int second = local_time->tm_sec;
i++;
printf("%d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second);
fprintf(fp, "%d, %d-%d-%d %d:%d:%d\n", i, year, month, day, hour, minute, second);
fflush(fp);
sleep(1);
}
return 0;
}
存在的问题
- 我在写这个程序的时候把 时间戳的获取和年月日时分秒的赋值 放在了循环体外,导致每一次输出到文件的系统时间都不变,其实必须放在循环体内才能获得每一秒的时间戳从而获得正确的数据
- 使用 sleep() 函数发现系统时间数据并没有输出到文件中,后来发现是没有加 fflush 对缓冲区进行刷新。
- 不会获取当前系统时间,一定要记住这个获取当前系统时间的方式!
- 对于标准输出 ‘\n’ 会导致自动刷新缓冲区,但是对于文件没有用,也就是这里的 fprintf 函数里的 ‘\n’ 对于自动刷新缓冲区没用。
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版