📄 fpublic.c
字号:
//最后修改日期:06-04-04 14:00
#include "fPublic.h"
#include "fDongYi.h"
#include <stdio.h>
#include <string.h>
int sfxCheckLength(char *sTextLine)
{
char sTmp[50];
strcpy(sTmp,sTextLine);
sfxTrim(sTmp);
if(strlen(sTmp)>=7 && strlen(sTmp)<=15) return 1;
else return 0;
}
int sfxCheckBillLen(char *sTextLine)
{
char sTmp[50];
strcpy(sTmp,sTextLine);
sfxTrim(sTmp);
if(strlen(sTmp)==5)
return 1;
else
return 0;
}
int sfxReadLine(char *sValue,int iBuffLen,FILE *fp)
{
char sBuff[50];
if(fp!=NULL)
{
fgets(sBuff,iBuffLen,fp);
sfxStrSplit(sBuff,'\n',0,sBuff);
sfxStrSplit(sBuff,'\r',0,sBuff);
return 1;
}
else
{
return 0;
}
}
int sfxWriteLineEx(char *sBillName,char *sTextLine)
{
FILE *fp;
char sFileName[50];
strcpy(sFileName,"/usr/db/");
strcat(sFileName,sBillName);
strcat(sFileName,".txt");
if((fp=fopen(sFileName,"a"))==NULL)
{
return 0;
}
else
{
fseek(fp,0,SEEK_END);
fputs(sTextLine,fp);
fclose(fp);
return 1;
}
}
int sfxSeekFileEx(char *sBillName,char *sValue)
{
FILE *fp;
char sFileName[50];
char sBuff[50];
strcpy(sFileName,"/usr/db/");
strcat(sFileName,sBillName);
// strcpy(sFileName,sBillName);
strcat(sFileName,".txt");
if((fp=fopen(sFileName,"r"))!=NULL)
{
while(!feof(fp))
{
fgets(sBuff,50,fp);
//strcpy(sValue,sBuff);
sfxStrSplit(sBuff,'\n',0,sBuff);
sfxStrSplit(sBuff,'\r',0,sBuff);
if(!strcmp(sBuff,sValue))
{
fclose(fp);
return 1;
}
}
fclose(fp);
return 0;
}
else
{
return 0;
}
}
void sfxTrim( char *Str )
{
int len , Left , Right ;
len = strlen( Str ) ;
if( len == 0 )
return ;
for( Left = 0 ; Left < len && (Str[Left] == 0x81 || Str[Left] == ' ') ; Left++ ) ;
if( Left == len ){
Str[1] = 0 ;
return ;
}
if( Left != 0 ){
memcpy( Str , Str+Left , len - Left ) ;
Str[len - Left] = 0 ;
}
len = strlen( Str ) ;
for( Right = len - 1 ; Right > 0 && (Str[Right] == 0x81 || Str[Right] == ' ' ) ; Right-- ) ;
if( Right < len - 1 )
Str[Right+1] = 0 ;
return ;
}
int sfxIsNull(char *sStr)
{
char tmp[100];
strcpy(tmp,sStr);
sfxTrim(tmp);
if(strcmp(tmp,"")==0)
{
return 1;
}
else
{
if(strcmp(tmp," ")==0) return 1;
else return 0;
}
}
void sfxGetSysTime( char *date )
{
time_t t ;
struct tm *tmm;
t = time(NULL) ;
tmm = localtime( &t ) ;
if ( tmm->tm_year < 1900 )
tmm->tm_year += 1900 ;
sprintf( date , "%04d-%02d-%02d %02d:%02d:%02d" , tmm->tm_year ,tmm->tm_mon + 1, tmm->tm_mday,tmm->tm_hour,tmm->tm_min,tmm->tm_sec ) ;
}
int sfxWriteLine(char *sFileName,char *sTextLine)
{
FILE *fp;
if((fp=fopen(sFileName,"a"))==NULL)
{
return 0;
}
else
{
fseek(fp,0,SEEK_END);
fputs(sTextLine,fp);
fclose(fp);
return 1;
}
}
void sfxStrSplit(char *sStrLine,char cSplit,int iStrCount,char *sResult)
{
int iCurCount=0;
int iCurChar=0;
char sDataBuff[256];
char tmpChar;
sDataBuff[0]='\0';
while(*sStrLine)
{
tmpChar=*sStrLine;
if(tmpChar==cSplit)
{
iCurCount++;
if(iCurCount>iStrCount)
{
strcpy(sResult,sDataBuff);
return ;
}
}
else
{
if(iCurCount==iStrCount)
{
sDataBuff[iCurChar]=tmpChar;
sDataBuff[iCurChar+1]='\0';
iCurChar++;
}
}
sStrLine++;
}
strcpy(sResult,sDataBuff);
return;
}
//创建文件
//iOverType:0,存在时不覆盖;1,存在是覆盖
int sfxCreatFile(char *sFileName,int iOverType)
{
FILE *fp;
char sOverType[10];
if(iOverType>0) strcpy(sOverType,"w");
else strcpy(sOverType,"a");
if((fp=fopen(sFileName,sOverType))==NULL)
{
return 0;
}
else
{
fclose(fp);
return 1;
}
}
int sfxIsFileExist(char *sFileName)
{
FILE *fp;
if((fp=fopen(sFileName,"r"))==NULL)
{
return 0;
}
else
{
fclose(fp);
return 1;
}
}
//格式化时间串
int sfxIsTimeType(char cChar)
{
switch(cChar)
{
case 'y':
case 'M':
case 'd':
case 'h':
case 'H':
case 'm':
case 's':
return 1;
default:
return 0;
}
}
int sfxIsTimeTypeEx(char *sSubType)
{
if(!strcmp(sSubType,"yyyy")) return 1;
if(!strcmp(sSubType,"yy")) return 1;
if(!strcmp(sSubType,"MM")) return 1;
if(!strcmp(sSubType,"M")) return 1;
if(!strcmp(sSubType,"dd")) return 1;
if(!strcmp(sSubType,"d")) return 1;
if(!strcmp(sSubType,"hh")) return 1;
if(!strcmp(sSubType,"h")) return 1;
if(!strcmp(sSubType,"HH")) return 1;
if(!strcmp(sSubType,"H")) return 1;
if(!strcmp(sSubType,"mm")) return 1;
if(!strcmp(sSubType,"m")) return 1;
if(!strcmp(sSubType,"ss")) return 1;
if(!strcmp(sSubType,"s")) return 1;
return 0;
}
void sfxCnvTimeType(struct tm *tCurTime,char *sSubType,char *sResult)
{
int iCurYear;
int iTimeItem;
char sTmpStr[50];
if(!strcmp(sSubType,"yyyy"))
{
iCurYear=tCurTime->tm_year;
if(iCurYear<1900) iCurYear+=1900;
sprintf(sResult,"%4d",iCurYear);
return;
}
if(!strcmp(sSubType,"yy"))
{
iCurYear=tCurTime->tm_year;
if(iCurYear<1900) iCurYear+=1900;
iCurYear%=100;
sprintf(sTmpStr,"%d",iCurYear);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"M"))
{
iTimeItem=tCurTime->tm_mon+1;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"MM"))
{
iTimeItem=tCurTime->tm_mon+1;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"d"))
{
iTimeItem=tCurTime->tm_mday;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"dd"))
{
iTimeItem=tCurTime->tm_mday;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"h"))
{
iTimeItem=tCurTime->tm_hour;
if(iTimeItem>12) iTimeItem-=12;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"hh"))
{
iTimeItem=tCurTime->tm_hour;
if(iTimeItem>12) iTimeItem-=12;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"H"))
{
iTimeItem=tCurTime->tm_hour ;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"HH"))
{
iTimeItem=tCurTime->tm_hour;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"m"))
{
iTimeItem=tCurTime->tm_min;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"mm"))
{
iTimeItem=tCurTime->tm_min;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
if(!strcmp(sSubType,"s"))
{
iTimeItem=tCurTime->tm_sec ;
sprintf(sResult,"%d",iTimeItem);
return;
}
if(!strcmp(sSubType,"ss"))
{
iTimeItem=tCurTime->tm_sec ;
sprintf(sTmpStr,"%d",iTimeItem);
if(strlen(sTmpStr)<2)
{
strcpy(sResult,"0");
strcat(sResult,sTmpStr);
}
else
{
strcpy(sResult,sTmpStr);
}
return;
}
strcpy(sResult,sSubType);
}
void sfxCnvTimeType_t(time_t *t,char *sSubType,char *sResult)
{
struct tm *tmm;
// t=time(NULL);
tmm=localtime(t);
sfxCnvTimeType(tmm,sSubType,sResult);
}
void sfxCnvTimeTypeEx(char *sSubType,char *sResult)
{
time_t t;
t=time(NULL);
sfxCnvTimeType_t(&t,sSubType,sResult);
}
void sfxFormatTime(struct tm *tCurTime,char *sDateType,char *sResult)
{
char sItemBuff[20];
char sCurItem[20];
char sLastItem[20];
char tmpChar;
int iCharType=0; //0,非格式串;1,格式串
int iCharCount=0;
char sTmpResult[20];
strcpy(sResult,"");
while(*sDateType)
{
tmpChar=*sDateType;
if(sfxIsTimeType(tmpChar)>0)
{
//当前字条是格式串
if(iCharCount>0) //当前缓冲中有内容
{
if(iCharType>0) //当前类型为格式串,直接添加
{
strcpy(sLastItem,sItemBuff);
strcpy(sCurItem,sItemBuff);
if(sfxIsTimeTypeEx(sLastItem)>0)
{
sCurItem[iCharCount]=tmpChar;
sCurItem[iCharCount+1]='\0';
if(sfxIsTimeTypeEx(sCurItem)<1)
{
if(strcmp(sCurItem,"yyy"))
{
sfxCnvTimeType(tCurTime,sLastItem,sTmpResult);//获取该内容
strcat(sResult,sTmpResult); //保存该内容
sItemBuff[0]='\0'; //清空缓冲
iCharCount=0;
iCharType=1;
}
}
}
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
else //当前类型非格式串,切换状态
{
//当前类型为非格式串且缓冲中有内容
strcat(sResult,sItemBuff); //保存该内容
sItemBuff[0]='\0'; //清空缓冲
iCharCount=0;
iCharType=1;
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
}
else //当前缓冲无内容,直接添加
{
sItemBuff[0]='\0'; //清空缓冲
iCharCount=0;
iCharType=1;
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
}
else
{
//当前字符非格式串
if(iCharCount>0) //当前缓冲中有内容
{
if(iCharType<1) //当前类型为非格式串,直接添加
{
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
else //当前类型格式串,切换状态
{
//当前类型为格式串且缓冲中有内容
sfxCnvTimeType(tCurTime,sItemBuff,sTmpResult);//获取该内容
strcat(sResult,sTmpResult); //保存该内容
sItemBuff[0]='\0'; //清空缓冲
iCharCount=0;
iCharType=0;
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
}
else //当前缓冲无内容,直接添加
{
sItemBuff[0]='\0'; //清空缓冲
iCharCount=0;
iCharType=0;
sItemBuff[iCharCount]=tmpChar;
sItemBuff[iCharCount+1]='\0';
iCharCount++;
}
}
sDateType++;
}
if(strlen(sItemBuff)>0)
{
sfxCnvTimeType(tCurTime,sItemBuff,sTmpResult);//获取该内容
strcat(sResult,sTmpResult); //保存该内容
}
}
void sfxFormatTimeEx(char *sDateType,char *sResult)
{
struct tm *tmm;
time_t t;
t=time(NULL);
tmm=localtime(&t);
sfxFormatTime(tmm,sDateType,sResult);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -