开发中遇到日期格式化与字符串替换函数,自己写了一个希望对朋友们有所帮助。
char* GetSystemDateTime(char chDaySplitSign, char chDayTimeSplitSign, char chTimeSplitSign)
{
SYSTEMTIME dtWork;
static char szSystemDateTime[DATE_LEN + TIME_LEN + 6];
char szSystemTime[TIME_LEN + 3];
memset(&dtWork, 0, sizeof(dtWork));
GetLocalTime(&dtWork);
memset(szSystemDateTime, 0, DATE_LEN + TIME_LEN + 6);
memset(szSystemTime, 0, TIME_LEN + 3);
if(chDaySplitSign == '/0'){
sprintf(szSystemDateTime, "%04d%02d%02d%c",
dtWork.wYear, dtWork.wMonth, dtWork.wDay, chDayTimeSplitSign);
} else {
sprintf(szSystemDateTime, "%04d%c%02d%c%02d%c",
dtWork.wYear, chDaySplitSign, dtWork.wMonth, chDaySplitSign, dtWork.wDay, chDayTimeSplitSign);
}
if(chTimeSplitSign == '/0'){
sprintf(szSystemTime, "%02d%02d%02d",
dtWork.wHour, dtWork.wMinute, dtWork.wSecond);
} else {
sprintf(szSystemTime, "%02d%c%02d%c%02d",
dtWork.wHour, chTimeSplitSign, dtWork.wMinute, chTimeSplitSign, dtWork.wSecond);
}
strcat(szSystemDateTime, szSystemTime);
return(szSystemDateTime);
}
char* strReplace(char* pSource, const char* pOld ,const char* pNew)
{
unsigned int iLen = 0;
char* pTemp = NULL;
char* pFind = NULL;
char* pLast = pSource;
int i = 0;
int iDiffLen = 0;
if(pSource == NULL || pOld == NULL || pNew == NULL)
{
return NULL;
}
if(strlen(pSource) == 0 || strlen(pOld) == 0)
{
return pSource;
}
iDiffLen = strlen(pNew) - strlen(pOld);
iLen = strlen(pSource);
pTemp = (char*)malloc(iLen+1);
if(pTemp == NULL)
{
return NULL;
}
memset(pTemp, 0x00, iLen+1);
while( (pFind = strFind(pLast, pOld)) != NULL)
{
i++;
if(iDiffLen > 0)
{
pTemp = (char*)realloc(pTemp,(iLen+i*iDiffLen+1));
if(pTemp == NULL)
{
return NULL;
}
memset(pTemp + strlen(pTemp), 0x00, iLen+i*iDiffLen+1-strlen(pTemp));
}
memcpy(pTemp + strlen(pTemp), pLast, pFind - pLast);
strcpy(pTemp + strlen(pTemp),pNew);
pLast = pFind + strlen(pOld);
}
if(i > 0)
{
if((unsigned int)(pLast - pSource) != iLen)
{
memcpy(pTemp + strlen(pTemp),pLast, (iLen - (pLast - pSource)));
}
strcpy(pSource, pTemp);
}
free(pTemp);
return pSource;
}
char *RTrim(char *pString)
{
int iCnt;
for(iCnt = strlen(pString) - 1; iCnt >= 0; --iCnt){
if(pString[iCnt] == 32){
pString[iCnt] = '/0';
} else {
break;
}
}
return pString;
}