作业 编程读写-一个文件test.txt ,每隔1秒向文件中写入年月日时分秒行 数据。5.12

题目要求:编程读写-一个文件test.txt ,每隔1秒向文件中写入行数据,类似这样:
1, 2007-7-30 15:16:42
2, 2007-7-30 15:16:43
该程序应该无限循环,直到按Ctr1-C中 断程序。
再次启动程序写文件时可以追加到原文件之后,并且序号能够接续上次的序号,比如:
1, 2007-7-30 15:16:42
2,2007-7-30 15:16:43
3,2007-7-30 15:19:02
4,2007-7-30 15:19:03
5,2007-7-30 15:19:04

提示:
要追加写入文件,同时要读取该文件的内容以决定下一一个序号是几,应该用什么模式打开文件?
首先判断一下打开的文件是否为新文件,如果是新文件,就从序号1开始写入;如果不是新文件,则统计原来有多少行,比如有n行,然后从序号n+1开始写入。以后每写多少行就把行号加1。
获取当前的系统时间需要调用函数time(),得到的结果是一一个time_t类型,其实就是一个大的结构体,
其值表示从UTC时间1970年1月1日00:00:00 (称为UNIX的Epoch时间)到当前时刻的秒钟数。然后调用localtime ()将time_ t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时),并转成struct tm*类型,该类型的各数据成员分别表示年月日时分秒,请自己写出转换格式的代码,不要使
用ct ime ()或asctime ()函数。具体用法请查阅man page。 time和localt ime函数需要头文件time. h。
调用sleep(n)可使程序睡眠n秒,该函数需要头文件unistd. h。

/*===============================================
*   文件名称:time_test.demo.c
*   创 建 者:memories 
*   创建日期:2023年05月10日
*   描    述:
================================================*/
#include 
#include 
#include  
#include 
#include "time_test.demo.h"

time_e nowtime()
{
    time_e p = malloc(sizeof(timee));
    if(p==NULL)
        return NULL;

    char *q=malloc(sizeof(size));
    
    bzero(p,sizeof(p));
    time_t now;
    struct tm *nowtime;
    time(&now);
    nowtime=localtime(&now);
    
    p->year=nowtime->tm_year+1900;
    p->month=nowtime->tm_mon+1;
    p->day=nowtime->tm_mday;
    p->hour=nowtime->tm_hour;
    p->minute=nowtime->tm_min;
    p->second=nowtime->tm_sec;

}

/*===============================================
*   文件名称:time_test.demo.h
*   创 建 者:memories 
*   创建日期:2023年05月10日
*   描    述:
================================================*/
#ifndef __time_test_demo_H_
#define __time_test_demo_H_

#define size 100


typedef struct timenow{
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
}timee,*time_e;


//时间创建函数
time_e nowtime();
#endif

/*===============================================
*   文件名称:time_demo.c
*   创 建 者:memories 
*   创建日期:2023年05月10日
*   描    述:
================================================*/
#include 
#include 
#include "time_test.demo.h"
#include 
int main(int argc, char *argv[])
{ 
    int i=0;
    FILE *fp=fopen("new_test3.txt","a+");
    while(1)
    {
    int ret = getc(fp);
     if(ret=='\n')
     {
            i++;
     }
     if(feof(fp))
     {
         printf("ok,letsgo\n");
         break;
     }
    }
    while(1)
    {

        time_e p=nowtime();
        char buf[100]={0};
        sprintf(buf,"%d %d-%d-%d %d:%d:%d\n",i,p->year,p->month,p->day,p->hour,p->minute,p->second);
        
        fputs(buf,fp);
        fflush(fp);
        printf("%s\n",buf);
        sleep(1);
        i++;
    }
    fclose(fp);
    return 0;
} 

你可能感兴趣的:(IO进程管理,unix,服务器)