#if 0
#ifndef _TM_DEFINED
struct tm {
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
#define _TM_DEFINED
#endif
struct tm *localtime(const time_t *timep);
localtime()将参数timep 所指的time_t 结构中的信息转换成
真实世界所使用的时间日期表示方法,然后将结果由结构tm 返回。
结构tm 的定义请参考gmtime()。
此函数返回的时间日期已经转换成当地时区。
#endif
#include <stdio.h>
#include <time.h>
int main(void)
{
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
struct tm *p_time;
time_t Get_All_Time;
time(&Get_All_Time);
p_time = localtime(&Get_All_Time);
printf("%d-%d-%d\n", p_time -> tm_year +1900, p_time -> tm_mon + 1, p_time -> tm_mday);
printf("%s-%d-%d-%d\n", wday[p_time -> tm_wday], p_time -> tm_hour, p_time -> tm_min, p_time -> tm_sec);
return 0;
}
/*
akaedu@akaedu-G41MT-D3:~/lin/806_io$ ./4
2014-8-23
Sat-18-53-18
akaedu@akaedu-G41MT-D3:~/lin/806_io$ ./4
2014-8-23
Sat-18-53-21
akaedu@akaedu-G41MT-D3:~/lin/806_io$
*/
*************************日志文件**************
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
void* get_time(void)
{
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
struct tm *p_time;
time_t Get_All_Time;
time(&Get_All_Time);
p_time = localtime(&Get_All_Time);
// printf("%d-%d-%d\n", p_time -> tm_year +1900, p_time -> tm_mon + 1, p_time -> tm_mday);
// printf("%s-%d-%d-%d\n", wday[p_time -> tm_wday], p_time -> tm_hour, p_time -> tm_min, p_time -> tm_sec);
return p_time;
}
void input_time_file(FILE *fpw)
{
int ret = 0;
int count_i = 1;
int count_j = 1;
char l_s_str[20];
char ch;
struct tm *p_time;
#if 0
while( (ch = fgetc(fpw)) != EOF){
if( ch == '\n'){
count_i++;
}
}
#endif
#if 1
while( (fscanf(fpw,"%d %s %s", &count_i, l_s_str, l_s_str)) != EOF ){
}
count_j = count_i;
// printf("%d\n", count_i); 每次运行程序时,得到最大行数
#endif
while(1){
p_time = get_time();
fprintf(stdout, "%d :%d-%d-%d %d:%d:%d\n", count_i++, p_time -> tm_year + 1900, p_time -> tm_mon + 1, p_time -> tm_mday,
p_time -> tm_hour, p_time -> tm_min, p_time -> tm_sec );
fprintf(fpw, "%d :%d-%d-%d %d:%d:%d\n", count_j++, p_time -> tm_year + 1900, p_time -> tm_mon + 1, p_time -> tm_mday,
p_time -> tm_hour, p_time -> tm_min, p_time -> tm_sec );
fflush(fpw); //记得冲刷缓冲区
sleep(1);
}
fclose(fpw);
}
int main(int argc, char *argv[])
{
FILE *fp;
if(argc != 2){
printf("Use:./a.out filename\n");
return 0;
}
if( (fp = fopen(argv[1], "a+")) == NULL ){
perror("open fail");
exit(1);
}
input_time_file(fp);
return 0;
}
/*
akaedu@akaedu-G41MT-D3:~/lin/806_io$ ./4.1 data
6 :2014-8-23 18:57:35
7 :2014-8-23 18:57:36
8 :2014-8-23 18:57:37
9 :2014-8-23 18:57:38
10 :2014-8-23 18:57:39
^C
akaedu@akaedu-G41MT-D3:~/lin/806_io$ ./4.1 data
10 :2014-8-23 18:57:40
11 :2014-8-23 18:57:41
^C
akaedu@akaedu-G41MT-D3:~/lin/806_io$
*/
简单 time I/O 写入日志文件 get_time
最新推荐文章于 2022-09-08 18:09:27 发布