⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpublic.c

📁 嵌入式开发
💻 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 + -