C语言 将程序运行的时间记录在记事本中,下次运行进行读取

fprintf函数:

头文件原型说明返回值
#include <stdio.h>int fprintf(FILE *stream, const char *format, …);向stream指向的流(而不是标准输出流)写入数据。除此之外,与printf函数完全相同。返回发送的字符数。当发生输出错误时,返回负值。

fscanf函数:

头文件原型说明返回值
#include <stdio.h>int fscanf(FILE *stream, const char *format, …);从stream指向的流(而不是从标准输入流)中读取数据。将读取的数据格式转换,并将转换结果保存至format后面的实参所指向的对象。format指向的字符串为格式控制字符串,它指定了可输入的字符串及其赋值时转换方法。格式控制字符串中可以不包含任何命令,也可包含多个命令。若没有执行任何转换就发生了输入错误,则返回宏定义EOF的值。否则,返回成功赋值的输入项数。若在输入中发生匹配错误,则返回的输入项数会少于转换说明符对应的实参个数,甚至为0。

fclose函数:

头文件原型说明返回值
#include <stdio.h>int fclose(FILE *stream);刷新stream所指向的流,然后关闭与该流相关联的文件。流中留在缓冲区里面尚未写入的数据会被传递到宿主环境,由宿主环境将这些数据写入文件。而缓冲区里面尚未读取的数据将被丢弃。然后断开流与文件的关联。如果存在系统自动分配的与流相关联的缓冲区,则会释放该缓冲区。若成功地关闭流,则返回0。检查到错误时返回EOF。
#include <time.h>
#include <stdio.h>

char data_file[] = "time.txt";

void get_data(void){
	FILE *fp;
	
	if ((fp = fopen("today.txt", "r")) == NULL){
		printf("本程序第一次运行。\n");
	} else {
		int year;
		int mon;
		int day;
		int hour;
		int min;
		int sec;
		
		while (fscanf(fp, "%04d %02d %d %02d %02d %02d", &year, &mon, &day, &hour, &min, &sec) == 6){
			printf("上一次运行是在%04d年%02d月%d日%02d时%02d分%02d秒。\n", year, mon, day, hour, min, sec);
		}
		fclose(fp);
	}
}

void put_data(void){
	FILE *fp;
	time_t current = time (NULL);
	struct tm *timer = localtime(&current);
	
	if((fp = fopen("today.txt", "w")) == NULL){
		printf("\a文件打开失败。\n");
	}else {
		fprintf(fp, "%04d %02d %d %02d %02d %02d\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec);
		fclose(fp);
	}
	
}


int main(void){
	get_data();
	put_data();
	
	return 0;
}

运行结果:
第一次执行:
在这里插入图片描述
第二次执行:
在这里插入图片描述
get_data()函数
第一次运行程序,显示“第一次运行”。
第二次运行程序,将程序上一次运行时写入的日期和时间读入文件并显示。

put_data()函数
在程序最后调用。将运行时的日期和时间写入today.txt 文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值