随笔 - 493  文章 - 0  评论 - 97  阅读 - 239万

C语言写文件或日志

/*
    功能:     获取当前系统时间
    返回值:    0-成功,-1-失败
    out:        保存返回的系统时间,格式由fmt决定
    fmt:        0-返回:yyyy-mm-dd hh24:mi:ss, 1-返回:yyyy-mm-dd, 2-返回:hh24:mi:ss
*/
int getTime(char *out, int fmt)                 // 获取当前系统时间
{
    if(out == NULL)
        return -1;
 
    time_t t;
    struct tm *tp;
    t = time(NULL);
 
    tp = localtime(&t);
    if(fmt == 0)
        sprintf(out, "%2.2d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d", tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec);
    else if(fmt == 1)
        sprintf(out, "%2.2d-%2.2d-%2.2d", tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday);
    else if(fmt == 2)
        sprintf(out, "%2.2d:%2.2d:%2.2d", tp->tm_hour, tp->tm_min, tp->tm_sec);
    return 0;
}
 
FILE* openFile(const char *fileName, const char *mode)  // 打开文本文件
{
    FILE *fp = fopen(fileName, mode);
    return fp;
}
 
/*
    功能:     将str写入到文件
    返回值:    写文件成功返回0,否则返回-1
    fp:     文件指针
    str:        待写入的字符串
    bLog:       1-是日志文件,0-不是日志文件
    说明:     如果是日志文件,将会在str前加上当前时间(格式如:2011-04-12 12:10:20)
*/
int writeFile(FILE *fp, const char *str, int bLog)          // 写字符串到文件,bLog表明是否为日志文件
{
    assert(fp != NULL && str != NULL);
    char curTime[100] = {0};
    int ret = -1;
    if(bLog) // 获取当前系统时间
    {
        getTime(curTime, 0);
        ret = fprintf(fp, "[%s] %s\n", curTime, str);
    }
    else
        ret = fprintf(fp, "%s\n", str);
 
    if(ret >= 0)
    {
        fflush(fp);
        return 0;               // 写文件成功
    }
    else
        return -1;
}
 
int closeFile(FILE *fp)
{
    return fclose(fp);
}


需要的头文件有:

time.h, string.h, stdio.h, assert.h

在写文件的时候,一定要控制好打开文件时的mode,防止误操作而删除了原来文件的内容。

posted on   清清飞扬  阅读(10413)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
< 2011年4月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示