C语言写文件或日志
时间:2011-04-10 来源:清清飞扬
/* 功能: 获取当前系统时间 返回值: 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 void *str, int bLog) // 写字符串到文件,bLog表明是否为日志文件 { assert(fp != NULL && str != NULL); char *p, curTime[100] = {0}; int len = 0, ret = -1; if(bLog) // 获取当前系统时间 getTime(curTime, 0); len = strlen(curTime) + strlen(str) + 5; p = malloc(len); if(p == NULL) return -1; if(bLog) sprintf(p, "[%s] %s\n", curTime, str); else sprintf(p, "%s\n", str); if(fwrite(p, strlen(p), 1, fp) == 1) ret = 0; // 写文件成功 free(p); return ret; } int closeFile(FILE *fp) { return fclose(fp); } 需要的头文件有:
time.h, string.h, stdio.h, assert.h.
在写文件的时候,一定要控制好打开文件时的mode,防止误操作而删除了原来文件的内容。
相关阅读 更多 +