1、非常简单的C语言记录文件功能。
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>#include <string.h>
#include <stdio.h>
#include <time.h>
#include <windows.h>
#define MAX_FILE_LEN 1024*1024
//获取当前系统时间
char* GetNowTime();
//in路径设置,out文件名
void Setlogpath(char* logpath/*in*/, int logpathLen, char* FileName/*out*/);
//获取文件大小
long GetFileSize(char* FileName/*in*/);
//写日志
void WriteLog(char* FileName/*in*/, char* logbuf/*in*/, int logbufsize/*in*/);
//写日志程序
void main()
{
//获取当前系统时间
char* TM = GetNowTime();
printf("当前时间是:%s\n",TM);
if(NULL != TM )
{
free(TM);
TM = NULL;
}
//TEST 文件路径和文件名设置
char logpath[20] = "E:\\";
int len = strlen(logpath);
char filename[50] = {0};
Setlogpath(logpath, len, filename);
printf("文件为:%s\n",filename);
//TEST 文件大小获取
long length = GetFileSize(filename);
printf("文件大小为:%d\n",length);
//TEST写日志
for (int i=0; i<10; ++i)
{
char* TM = GetNowTime();
printf("%s",TM);
if(NULL != TM )
{
free(TM);
TM = NULL;
}
char strbuf1[32];
memset(strbuf1, 0, sizeof(strbuf1));
sprintf(strbuf1, "====> %d\n", i);
WriteLog(filename, strbuf1, strlen(strbuf1));
printf("文件为:%s\n",strbuf1);
#ifdef WIN32 //是否windows判断
Sleep(100); // 毫秒
#else
sleep(1); // 秒
#endif
}
printf("hello....\n");
system("pause");
return ;
}
//获取当前系统时间
char* GetNowTime()
{
struct tm* strTm;
time_t ttime;
time(&ttime);
strTm = localtime(&ttime);
char* NowTimeBuf = (char*)malloc(20 * sizeof(char));
sprintf(NowTimeBuf, "%04d-%02d-%02d %02d:%02d:%02d", strTm->tm_year+1900,
strTm->tm_mon+1, strTm->tm_mday,strTm->tm_hour, strTm->tm_min, strTm->tm_sec);
return NowTimeBuf;
}
//in路径设置,out文件名
void Setlogpath(char* logpath/*in*/, int logpathLen, char* FileName/*out*/)
{
struct tm* strTm;
time_t ttime;
time(&ttime);
strTm = localtime(&ttime);
memcpy(FileName, logpath, logpathLen);
sprintf(FileName+logpathLen, "%04d-%02d-%02d.txt", strTm->tm_year+1900, strTm->tm_mon+1, strTm->tm_mday);
}
//获取文件大小
long GetFileSize(char* FileName/*in*/)
{
long length = 0;
if (FileName != NULL)
{
FILE* fp = NULL;
fp = fopen(FileName, "rb");
if (fp != NULL)
{
fseek(fp, 0, SEEK_END);
length = ftell(fp);
}
if (fp != NULL)
{
fclose(fp);
fp = NULL;
}
}
return length;
}
//写日志
void WriteLog(char* FileName/*in*/, char* logbuf/*in*/, int logbufsize/*in*/)
{
if (NULL != FileName && NULL != logbuf)
{
if(GetFileSize(FileName) < MAX_FILE_LEN)
{
//文件写操作
FILE* fp = NULL;
fp = fopen(FileName, "a+");
if (NULL != fp)
{
char* TM = GetNowTime();
fwrite(TM, 20, 1, fp);//时间记录
fwrite(logbuf, logbufsize, 1, fp);//内容记录
if(NULL != TM )
{
free(TM);
TM = NULL;
}
}
fclose(fp);
fp = NULL;
}
else
{
//文件过大将删除文件
unlink(FileName);
}
}
}