C语言复习之向文本文件中写入时间(以及按行读取时间)

1.声明

当前内容主要为向文件中写入文本时间,并按行读取时间数据

主要使用

  1. time.h这个库中的time()和localtime方式获取当前的时间

2.demo

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

/**
 * @description 定义一个日期类型的结构体
 */
typedef struct Date {
    struct tm *local;
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
} Date;

char *get_date_format() {
    return "%.4d/%.2d/%.2d %.2d:%.2d:%.2d";
}

void readTimeTxt(char *path) {
    FILE *read = fopen(path, "r");
    if (read == NULL) {
        printf("读书的文件不存在");
        //exit(-1);
        return;
    }
    int year, month, day, hour, minue, second;
    char line[100];
    //int result=fscanf(read, "%[^\n]\n", line);
    //printf("%d\n",result);
    /*if(result==EOF)
    {
        puts("读取文件出现错误。。。。");
    }else
    {
        puts(line);
    }
    // 问题出现,无法读取空格问题
    while(fscanf(read, "%d/%d/%d %d:%d:%d", &year,&month,&day,&hour,&minue,&second)==6)
    {
        //fscanf(read, "\n");
        printf("read time:%d/%d/%d %d:%d:%d\n",year,month,day,hour,minue,second);
    }*/

    // 直接读取一行数据包括空格,但是不能转换为对象,需要从字符中截取才行
    while(fscanf(read, "%[^\n]\n",line)==1)
    {
        //fscanf(read, "\n");
        printf("read time:%s\n",line);
    }
    fclose(read);
}

/**
 * @description 将当前的tm时间转换为对应的结构体Date
 * @param local
 * @return
 */
struct Date convertToDate(struct tm *local) {
    Date date;
    date.year = local->tm_year + 1900;
    date.month = local->tm_mon + 1;
    date.day = local->tm_mday;
    date.hour = local->tm_hour;
    date.minute = local->tm_min;
    date.second = local->tm_sec;
    return date;
}

struct Date get_current_time() {
    time_t t;
    struct tm *local;
    time(&t);
    local = localtime(&t);
    return convertToDate(local);;
}


void writeTimeTxt(char *path) {
    FILE *write = fopen(path, "a");
    if (write == NULL) {
        printf("写入的文件不存在");
        //exit(-1);
        return;
    }
    struct Date date = get_current_time();

    fprintf(write, get_date_format(), date.year, date.month, date.day, date.hour, date.minute, date.second);
    fprintf(write, "\n");

    fclose(write);
}

int main() {

    char path[] = "../resources/readTime.txt";
    /* puts("请输入需要读取的日期文本数据:");*/
    writeTimeTxt(path);
    puts("写入日期数据到文件中成功!");
    /*scanf("%s",path);*/
    readTimeTxt(path);
    puts("读取日期数据文件中成功!");
    // 写入数据没有问题
    //writeTimeTxt(path);
    return 0;
}

本人定义了一个日期结构Date用于存放和转换当前的获取到的时间

主要问题,在写入的时候很容易,但是读取的时候,本来是要解析数据的,但是感觉有点麻烦,所以就直接按行读取数据了

按行读取为:"%[^\n]\n"

3.测试

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值