📄 pub_func.cpp
字号:
strcpy(outData,tmpdata); *data_len = strlen(outData); return 0;}//////////////////////////////////////////////// Added by MIQH -- 2002.04.12 // 函数功能: 将字符串中指定的字符去掉////////////////////////////////////////////// int TrimChar( char * inData, char * outData, int ch ){ int i = 0; int j = 0; char tmp[1024]; memset(tmp,0,1024); for( i=0; i<(int)strlen(inData); i++ ) { if( inData[i]!=ch ) { tmp[j++] = inData[i]; } } strcpy(outData,tmp); return 0;}/////////////////////////////////////////////////// Added by MIQH -- 2002.04.12 //函数功能: 将字符串转换为ASC码->EBCD码的预备串///////////////////////////////////////////////// int CD4CAL( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ int num; char tmp[1024]; memset(tmp,0,1024); TrimChar(argv[0],tmp,32); num = strlen(tmp)/4; sprintf(outData,"%d",num); *data_len = strlen(outData); return 0;}/////////////////////////////////////////////////// Added by MIQH -- 2002.04.12 //函数功能: 将字符串中指定的字符去掉///////////////////////////////////////////////// int TrimCh( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ char tmp[1024]; memset(tmp,0,1024); TrimChar( inData, tmp, atoi(argv[0]) ); strcpy(outData,tmp); *data_len = strlen(outData); return 0;}//////////////////////////////////////////////////////Added by MIQH -- 2002.06.26 // 函数功能: 格式化字符串为定长,使输出串的所有字符// 都为数字字符,不足定长左补零,超长从左向右截短//////////////////////////////////////////////////// int NumStr( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ char tmp[1024]; int inLen; int outLen; int i=0; int k=0; memset(tmp,0,1024); inLen = strlen(inData); outLen = atoi(argv[0]); for( i=0; i<inLen; i++ ) { if( 47<inData[i] && inData[i]<58 ) { tmp[k++] = inData[i]; } } if( k<outLen ) { memset( outData, '0', outLen ); memcpy( outData+outLen-k, tmp, k ); } if( k>=outLen ) { memcpy( outData, tmp+k-outLen, outLen ); } outData[outLen] = 0; *data_len = strlen(outData); return 0;}//////////////////////////////////////////////////////从18位金额获取15位金额int FillMon( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ int inLen; int outLen; char Tmp[1024],Money[100]; memset( outData , 0 , sizeof(outData)); memset( Tmp , 0 , sizeof(Tmp)); inLen = strlen(inData); //outLen = atoi(argv[0]); sprintf( Tmp , argv[0]); //strcpy( outData, inData+3 ); strcpy( Money, Tmp+3 ); sprintf( outData , "%015s",Money); outData[strlen(outData)] = 0; *data_len = strlen(outData);printf("-++++++++- inData:[%s]\n", inData );printf("-++++++++- outData:[%s]\n", outData ); return 0;}//////////////////////////////////////////////////// Added by HCF -- 2002.07.26 // 函数功能: 将输入字符串的指定字符替换为另一字符// 参数一为被替换字符// 参数二为替换字符////////////////////////////////////////////////// int ReplaceAsc( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ int i=0; char src, obj; strcpy( outData, inData ); if ( argc != 2 ) return -1; src = (char)atoi(argv[0]); obj = (char)atoi(argv[1]); for( i=0; outData[i] ; i++ ) { if ( outData[i] == src ) outData[i] = obj; } *data_len = strlen(outData); return 0;}///////////////////////////////////////////////// // Added by HCF -- 2002.07.26 // 函数功能: 删除字符串中的不可显示字符// 目前只删除回车、换行///////////////////////////////////////////////// int DelUnprtasc( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ int i=0; strcpy( outData, inData ); for( i=0; outData[i] ; i++ ) { if ( outData[i] == 0x0a || outData[i] == 0x0d ) outData[i] = ' '; } *data_len = strlen(outData); return 0;}/////////////////////////////////////////////////// Added by HCF -- 2002.07.31 // 函数功能: 删除字符串中的不可显示字符// 目前只删除回车、换行//////////////////////////////////////////////// int IsCCPC( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ strcpy( outData, inData ); Trim( outData, "A" ); if ( strlen( outData ) == CCPCIDLEN ) outData[0] = 0; *data_len = strlen(outData); return 0;}//接收 商业银行报文, 解包前的预处理函数int mb_text(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; int i; char TrxsNo[6]; memset( TrxsNo , 0 , sizeof( TrxsNo )); i = strlen(indata); if (i < M_MB_PKGNO_OFFSET + 3) { printf( "取报文号失败indata [%s]\n" , indata ); return(M_FAIL); } memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_MB_PKGNO_OFFSET , M_CMTNO_LEN); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_MB); if( strncmp( strCMTNo , "004" , 3 ) == 0 ) { memcpy( TrxsNo , indata + 5 ,3 ); if( strncmp( TrxsNo , "114" , 3 ) == 0 ) strcat(strTransCode, TrxsNo); else strcat(strTransCode, strCMTNo); } else { strcat(strTransCode, strCMTNo); } //strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata); printf("Trans code = [%s] \n", strTransCode); return 0;}//////接收 CNAPS 系统报文, 解包前的预处理函数// //int cnaps_text(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; char TrxsNo[6]; int i; memset( TrxsNo , 0 , sizeof( TrxsNo )); i = strlen(indata); if (i < M_PKGNO_OFFSET) { printf( "取报文号失败indata [%s]\n" , indata ); //return(M_FAIL); } // Get CMT No from the input stream memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_PKGNO_OFFSET, M_CMTNO_LEN); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_CNAPS); if( strncmp( strCMTNo , "004" , 3 ) == 0 ) { memcpy( TrxsNo , indata + 26 , 3); if( strncmp( TrxsNo , "114" , 3 ) == 0 ) strcat(strTransCode, TrxsNo); else strcat(strTransCode, strCMTNo); } else { strcat(strTransCode, strCMTNo); } strcpy(outdata, strTransCode); *len = strlen(outdata);#ifdef _DEBUG_ printf("Trans code = [%s] \n", strTransCode);#endif return 0;}int mb_pkghead(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; int i; i = strlen(indata); if (i < M_MB_PKGHEAD_OFFSET + 3) { printf( "取报文号失败indata [%s]\n" , indata ); return(M_FAIL); } memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_MB_PKGHEAD_OFFSET , M_CMTNO_LEN); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_MB); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata); printf("Trans code = [%s] \n", strTransCode); return 0;}//////接收 CNAPS 系统报文, 解包前的预处理函数// //int cnaps_pkghead(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; int i; i = strlen(indata); if (i < M_PKGHEAD_OFFSET) { printf( "取报文号失败indata [%s]\n" , indata ); return(M_FAIL); } // Get CMT No from the input stream memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_PKGHEAD_OFFSET, M_CMTNO_LEN); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_CNAPS); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata);#ifdef _DEBUG_ printf("Trans code = [%s] \n", strTransCode);#endif return 0;}//int SetExp(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char Tmp[1024]; int Len; memset( Tmp , 0 , sizeof( Tmp )); Len = atoi(argv[0]); printf("SetExpLen = [%s][%s][%d]\n",argv[0],argv[1],Len); memcpy( Tmp , indata , Len ); printf("OutDate = [%s]\n",outdata); strcpy(outdata, Tmp); *len = strlen(outdata); return 0;}BOOL StrTrim( char *in_data ){ int i,j = 0; char tmp[1024]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] != ' ') tmp[j++] = in_data[i]; } strcpy( in_data , tmp); return TRUE;}int TrimSpaceFillChar(int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ char ch; char tmp[1000]; int in_len,len; int i; memset(tmp,0,sizeof(tmp)); len = atoi(argv[2]); StrTrim(in_data); in_len = strlen(in_data); if(len <= in_len) { strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = len; return 0; } ch = argv[1][0]; if(strcmp(argv[0],"left") == 0) { for(i = 0;i<len - in_len;i++) tmp[i]=ch; strcat(tmp,in_data); } else { strcpy(tmp,in_data); for(i = in_len;i<len;i++) tmp[i]=ch; } strcpy(out_data,tmp); out_data[len] = '\0'; *data_len = atoi( argv[2] ); return( 0 );}int JuDgeNumStr( char *in_data ){ int i = 0; char tmp[1024]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] > '9'||in_data[i] < '0') return -1; } return 0;}int Get_LimteDate(int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ if( (JuDgeNumStr(argv[0]) == 0) || (JuDgeNumStr(argv[1]) == 0) ) { char Day[3],Month[3],Year[5],Day1[3]; memset( Day , 0 , sizeof( Day )); memset( Month , 0 , sizeof( Month )); memset( Year , 0 , sizeof( Year )); memset( Day1 , 0 , sizeof( Day1 )); memcpy( Year , argv[0] , 4 ); memcpy( Month , argv[0]+4 , 2 ); memcpy( Day , argv[0]+6 , 2 ); memcpy( Day1 , argv[1]+6 , 2 ); if( atoi(Day) < atoi(Day1)) { switch(atoi(Month)) { //大月31天,小月30天 case 1:case 3:case 5:case 7:case 8: case 10: case 12: sprintf(out_data,"%02d",atoi(Day)+31-atoi(Day1)); break; //闰年2月29天,其他2月28天 case 2: if( atoi(Year)%4 == 0 ) sprintf(out_data,"%02d",atoi(Day)+29-atoi(Day1)); else sprintf(out_data,"%02d",atoi(Day)+28-atoi(Day1)); break; default: sprintf(out_data,"%02d",atoi(Day)+30-atoi(Day1)); break; } } else { sprintf(out_data,"%02d",atoi(Day)-atoi(Day1)); } } else { //如果输入期限有问题则固定赋值 memcpy ( out_data, "02", 2 ); } *data_len = strlen(out_data); return 0;}int Get_BsrList(int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ strcpy(out_data,in_data); *data_len = strlen(out_data); return 0;}int GetRealData(int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ int len,Count; int Len; len = atoi(argv[1]); Count = atoi(argv[0]); Len = len*Count; printf("Len = [%d*%d]=[%d]\n", len,Count,Len); memcpy( out_data , in_data , Len ); *data_len = strlen(out_data); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -