📄 ctool.cpp
字号:
#include <afx.h>
#include "Ctool.h"
void ValueTrans( char * numstr )
{
int i,j,zero,len,locat;
char str[21]="";
char *ptr, c;
BOOL bIsFu = FALSE;
i=j=zero=len=locat=0;
if( numstr[0] == '-' )
{
bIsFu = TRUE;
strcpy( numstr, &numstr[1] );
}
len=strlen(numstr);
for( i=0; i<len; i++ )
{
if( numstr[i] == '*' ) numstr[i] = '.';
if( numstr[i] == '#' ) numstr[i] = 0x0;
}
ptr=strchr(numstr,'.');
if (ptr)
len=locat=ptr-numstr;
else
len=strlen(numstr);
strcpy( str,numstr );
for (i=0;i<len;i++) //整数部分
{
if (str[i]!='0')
{
if (zero>=1)
{
zero+=(len-i);
if ( zero>8 )
numstr[j++]='y';
else
{
if ( zero>4 && zero!=8)
numstr[j++]='w';
}
if( zero != 5 )
{
numstr[j++]='0';
}
zero=0;
}
numstr[j++]=str[i];
if(len-i>1)
{
switch ( len-i )
{
case 2:
case 6:
case 10: c='s';break; //拾
case 7:
case 3: c='b';break; //百
case 8:
case 4: c='q';break; //千
case 5: c='w';break; //万
case 9: c='y';break; //亿
}
numstr[j++]=c;
}
}
else
zero++;
}
if ( zero>4 )
{
if ( zero>8 )
numstr[j++]='y';
else
numstr[j++]='w';
}
if(locat>0)
{
if (str[locat+1]!='0' || str[locat+2]!='0')
{
numstr[j++]=str[locat++];
numstr[j++]=str[locat++];
numstr[j++]=str[locat];
}
}
numstr[j]=0x0;
if( bIsFu )
{
strcpy( str, numstr );
strcpy( numstr, "-" );
strcat( numstr, str );
}
if( !strlen(numstr) ) strcpy( numstr, "0" );
}
/********************************************************************
* 将日期转为其语音串
*********************************************************************/
void DateTrans( char * date )
{
int len, j = 4;
char tempstr[9] = "";
strcpy( tempstr, date );
len = strlen( tempstr );
strncpy( date, tempstr, 4 );
date[j++] = 'N'; //年
if ( tempstr[4] != '0' )
{
date[j++]='s';
if ( tempstr[5] != '0' )
date[j++]=tempstr[5];
}
else
date[j++] = tempstr[5];
date[j++] = 'Y'; //月
if ( tempstr[6]!='0' )
{
if ( tempstr[6]>'1' )
date[j++] = tempstr[6];
date[j++]='s';
if ( tempstr[7]!='0' )
date[j++] = tempstr[7];
}
else
date[j++] = tempstr[7];
date[j++] = 'R'; //日
date[j] = 0x0;
}
/********************************************************************
* 将时间转为其语音串
*********************************************************************/
void TimeTrans( char * time )
{
int len, j = 0;
char tempstr[7] = "";
strcpy( tempstr, time );
len = strlen( tempstr );
switch( tempstr[0] )
{
case '0': break;
case '1': time[j++] = 's'; break;
case '2': time[j++] = tempstr[0]; time[j++] = 's'; break;
default: break;
}
time[j++] = tempstr[1];
if ( tempstr[1]=='0' && tempstr[0]!='0' ) j--;
time[j++] = '.';
switch( tempstr[2] )
{
case '0': break;
default: time[j++] = tempstr[2]; time[j++] = 's'; break;
}
time[j++] = tempstr[3];
if ( tempstr[3]=='0' && tempstr[2]!='0' ) j--;
time[j++] = 'F';
time[j ]= 0x0;
}
//******************************************************************
/********************************************************************
* 将数值转化为百分数语音串
*********************************************************************/
void PercentTrans( char * m_value )
{
char tempstr[21] = "";
double value = atof( m_value ) * 100 ;
sprintf( tempstr, "%g", value );
strcpy( m_value, "%" );
strcat( m_value, tempstr );
}
//******************************************************************
int AbstractData(char *szData, int nIndex, char *szOut, char cSeperatorChar)
{
/******************************
前提:szData是由cSeperatorChar分隔开的字符串.
注意:szData若只有一个域,也需要在结尾加分隔符.
nIndex: 由1开始的索引
szOut: (out)输出的字符串,需要事先分配空间
返回: -1 出错
0 成功找到, 但可能为空
1 没找到
******************************/
int nPosition;
char *szTemp, *szTemp2;
char *szTempSave;
szTemp = (char *)malloc(strlen(szData) + 1);
strcpy(szTemp, szData);
szTempSave = szTemp;
szOut[0] = 0;
szTemp2 = (char *)malloc(strlen(szData) + 1);
char szSeperator[2] = "\0";
szSeperator[0] = cSeperatorChar;
char *p1;
//忽略第nIndex个成员之前的数据
for(int i = 0; i < nIndex - 1; i ++)
{
p1 = strstr(szTemp, szSeperator);
if(p1 == NULL)
{
free(szTempSave);
free(szTemp2);
return(1);
}
else
{
nPosition = p1 - szTemp;
szTemp += nPosition + 1;
}
}
//寻找第nIndex个成员后面的分隔符
p1 = strstr(szTemp, szSeperator);
if(p1 == NULL)
{//第nIndex个成员没有以分隔符结尾
strcpy(szOut, szTemp);
}
else
{//找到第nIndex个成员后面的分隔符
memcpy(szOut, szTemp, p1 - szTemp);
szOut[p1 - szTemp] = 0;
}
free(szTempSave);
free(szTemp2);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -