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

📄 pub_func.cpp

📁 液晶电视完整代码可实现人机界面
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "pub_func.h"//////接收 商业银行报文, 解包前的预处理函数//   //int mb_pkg(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_CMTNO_OFFSET + 3)	{		printf("[%s - %d]Message length [%d] less than CMT No offset [%d]\n", __FILE__, __LINE__, i, M_MB_CMTNO_OFFSET + 3);		printf( "indata [%s]\n" , indata );		return(M_FAIL);	}	// Get CMT No from the input stream	memset(strCMTNo, 0, sizeof(strCMTNo));	memcpy(strCMTNo, indata + M_MB_CMTNO_OFFSET , M_CMTNO_LEN);		printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo);	memset(strTransCode, 0, sizeof(strTransCode));	strcpy(strTransCode, M_TXCODE_PREFIX_MB);	strcat(strTransCode, strCMTNo);	strcpy(outdata, strTransCode);	*len = strlen(outdata);	printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode);	return 0;}//////接收 CNAPS 系统报文, 解包前的预处理函数//   //int cnaps_pkg(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_CMTNO_OFFSET)	{		printf("[%s - %d]Message length [%d] less than CMT No offset [%d]\n", __FILE__, __LINE__, i, M_CMTNO_OFFSET);		return(M_FAIL);	}	// Get CMT No from the input stream	memset(strCMTNo, 0, sizeof(strCMTNo));	memcpy(strCMTNo, indata + M_CMTNO_OFFSET, M_CMTNO_LEN);#ifdef _DEBUG_	printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo);#endif	memset(strTransCode, 0, sizeof(strTransCode));	strcpy(strTransCode, M_TXCODE_PREFIX_CNAPS);	strcat(strTransCode, strCMTNo);		strcpy(outdata, strTransCode);	*len = strlen(outdata);#ifdef _DEBUG_	printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode);#endif	return 0;}//////接收 商业银行报文, 打包发往 CNAPS 系统前的预处理函数//   //int mkcnapspkg(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){	// strcpy(outdata, "100100");	// strcpy(outdata, "100109");	// strcpy(outdata, "100999");//	*len = 6;//	return 0;	char strCMTNo[M_CMTNO_LEN + 1];	char strTransCode[M_TXCODE_LEN + 1];	memset(strCMTNo, 0, sizeof(strCMTNo));	memcpy(strCMTNo, indata + M_MB_CMTNO_OFFSET, M_CMTNO_LEN);	printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo);	memset(strTransCode, 0, sizeof(strTransCode));	strcpy(strTransCode, M_TXCODE_PREFIX_MB);	strcat(strTransCode, strCMTNo);	strcpy(outdata, strTransCode);	*len = strlen(outdata);;	printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode);	return 0;}//////接收 CNAPS 系统报文, 打包发往商业银行前的预处理函数//   //int mkmbpkg(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];	memset(strCMTNo, 0, sizeof(strCMTNo));	memcpy(strCMTNo, argv[0], M_CMTNO_LEN);	printf("indata = [%s]\n", indata);	printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo);	memset(strTransCode, 0, sizeof(strTransCode));	strcpy(strTransCode, M_TXCODE_PREFIX_MB);	strcat(strTransCode, strCMTNo);	strcpy(outdata, strTransCode);	*len = strlen(outdata);;	printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode);	return 0;}int Trim(char *strBuffer, char *strFlag){	char strTemp[1024];	int i, j, iFlag; 	int iStrLen;	char *p;	if (strFlag[0] != 'A' && strFlag[0] != 'L' && strFlag[0] != 'R')		return(0);	iStrLen = strlen(strBuffer);	memset(strTemp, 0, sizeof(strTemp));		j = 0;	iFlag = 0;	if (strFlag[0] == 'A')	{		Trim(strBuffer, "L");		Trim(strBuffer, "R");	}			else 	{		if (strFlag[0] == 'L')  // 去左空格 			i = 0;		else 			i = iStrLen - 1;		while (1)		{			if ( (strFlag[0] == 'L' && i == iStrLen) || 			     (strFlag[0] == 'R' && i < 0) ) 				break;			if (strBuffer[i] == ' ' && iFlag == 0)				;			else 			{				strTemp[j++] = strBuffer[i];				if (iFlag == 0)					iFlag = 1;			}			if (strFlag[0] == 'L')  // 去左空格   				i ++;			else 				i --;		}		strTemp[j] = '\0';		strcpy(strBuffer, strTemp);		if (strFlag[0] == 'R')  // 去右空格 		{			printf("[%s]()\n", strBuffer);			iStrLen = strlen(strBuffer);			p = strBuffer;			memset(strTemp, 0, sizeof(strTemp));			i = 1;			while(*p)			{				strTemp[iStrLen - i] = *p;						p++;				i++;			}			strcpy(strBuffer, strTemp);		}	}	return 0;}int	TRIM( int argc,char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){	strcpy( out_data, in_data );	Trim( out_data, argv[0] );	*data_len = strlen( out_data );	return( 0 );}int real_len(int argc, char *argv[], char *indata, int *len, char *outdata){	char buf[20];	//小额CMT类报文专用	//sprintf(buf, "%06d", strlen(indata) );	sprintf(buf, "%06d", strlen(indata) + 36);	printf("[%s - %d]格式后处理函数取得 Message Length: [%s]\n", __FILE__, __LINE__, buf);	memcpy(indata + M_MSGLEN_OFFSET, buf, M_MSGLEN_LEN);	return M_SUCCESS;}// Fill the special characterint	FILL_CHAR( 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]);	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 );}// Fill the space characterint	Fill_Space( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){	char	ch;	char tmp[2000];	int in_len,len;	int i;	memset(tmp,0,sizeof(tmp));		len = atoi(argv[1]);	in_len = strlen(in_data);	printf("需填充到的长度=[%d] ,输入串=[%s] ,串的实际长度=[%d]\n",len,in_data ,in_len);		if(len <= in_len) 	{		strcpy(out_data,in_data);		out_data[len] = '\0';		*data_len = len;		return 0;	}			ch = ' ';	if(strcmp(argv[0],"left") == 0) 	{		for(i = 0;i<len - in_len;i++)		{			tmp[i]=ch;		}				strcat(tmp,in_data);	}	else if(strcmp(argv[0],"right") == 0) 	{		strcpy(tmp,in_data);		for(i = in_len;i<len;i++)		{			tmp[i]=ch;		}	}	else	{		// Added by jolly 2002-4-13 11:27		#ifdef _DEBUG_		printf("Fill_Space函数用法错误,第一个参数请用\"left\" or \"right\"\n");		#endif				strcpy(out_data,in_data);		out_data[len] = '\0';		*data_len = strlen(out_data);		return 0;		// end	}	strcpy(out_data,tmp);	out_data[len] = '\0';	*data_len = strlen(out_data);		printf( "Fill_Space函数输出串 [%s]\n\n" , out_data );		return 0;}// Fill the space character// Fill the space characterint	FillSp( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){	char	ch;	char tmp[2000];	int in_len,len;	int i;	memset(tmp,0,sizeof(tmp));	memset( out_data , 0 , sizeof( out_data));		len = atoi(argv[1]);	in_len = strlen(in_data);	printf("需填充到的长度=[%d] ,输入串=[%s] ,串的实际长度=[%d]\n",len,in_data ,in_len);		if(len <= in_len) 	{		strcpy(out_data,in_data);		out_data[len] = '\0';		*data_len = len;		return 0;	}			ch = ' ';	if(strcmp(argv[0],"left") == 0) 	{		for(i = 0;i<len - in_len;i++)		{			tmp[i]=ch;		}				strcat(tmp,in_data);	}	else if(strcmp(argv[0],"right") == 0) 	{		strcpy(tmp,in_data);		for(i = in_len;i<len;i++)		{			tmp[i]=ch;		}	}	else	{		// Added by jolly 2002-4-13 11:27		#ifdef _DEBUG_		printf("FillSp函数用法错误,第一个参数请用\"left\" or \"right\"\n");		#endif				strcpy(out_data,in_data);		out_data[len] = '\0';		*data_len = strlen(out_data);		return 0;		// end	}	strcpy(out_data,tmp);	out_data[len] = '\0';	*data_len = strlen(out_data);		memset( in_data , 0 , sizeof( in_data));	printf( "FillSp函数输出串 [%s]\n\n" , out_data );		return 0;}// Check the tranctionint	Check_Account( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){	return 0;}// Left or Right Cut the special len characters from Stringint Cut_data( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){	int len;	int len0;	#ifdef _DEBUG_	printf("Cutin_data=[%s][%d]\n",in_data,strlen(in_data));	printf("Cut_data argc:%d argv0[%s]argv1[%s]\n",argc,argv[0],argv[1]);	#endif	len = atoi(argv[1]);	len0 = strlen(in_data);	#ifdef _DEBUG_	printf("需截掉的长度=[%d] ,串的实际长度=[%d]\n",len,len0);	#endif	// 如果需截掉的长度大于串实际长度,则将输入串直接输出	if(len >= strlen(in_data)) 	{		strcpy(out_data,in_data);		*data_len = strlen(in_data);		return 0;	}	if( strcmp(argv[0],"right") == 0) 	{		strncpy(out_data,in_data,len0 - len);		*data_len = len0 - len;	}	else if( strcmp(argv[0],"left") == 0 ) 	{		strncpy(out_data,&in_data[len],len0 - len);		*data_len = len0 - len;	}	else	{		// Added by jolly 2002-4-13 11:27		#ifdef _DEBUG_		printf("Cut_data函数用法错误,第一个参数请用\"left\" or \"right\"\n");		#endif				strcpy(out_data,in_data);		*data_len = strlen(in_data);		return 0;		// end	}	out_data[len0-len]='\0';	#ifdef _DEBUG_	printf("输出串=[%s],输出串长度[%d]\n\n",out_data,strlen(out_data));	#endif	return 0;}// Add the dot to Amount int AddDot( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){	double d;	d = atof(argv[0])/100.0;	sprintf(out_data,"%.2f",d);	*data_len = strlen(argv[0]);	return 0;}// Del the dot from Amount int DelDot( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){    double d;	char tmp[100];	memset(tmp,0,sizeof(tmp));	d = atof(argv[0])*100.0;	sprintf(tmp,"%.0f",d);	*data_len = atoi( argv[1] );//	FillChar( out_data, tmp, '0', *data_len );    return 0;}int	DelRMB( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){	char tmp[100]="000000000000000";	int len;	len = strlen(in_data);	if(len>18)	{		len = 18;	}			memcpy( tmp+(18-len), in_data+3, len-3 );	tmp[15] = 0;	strcpy( out_data, tmp );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -