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.测试