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

📄 txt2bin.c

📁 一个在LINUX运行的将TXT文本转化为2进制文件的软件
💻 C
字号:
/* iso ascii昗弨傪僐儞僷僠偡傞 */
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE
#endif

#include "../../inc/FileIO.h"
/**************************************************************************/
/*                                                                        */
/* 娭悢柤     : IRMSChgTxt2Bin                                            */
/* 張棟奣梫   : 暥杮僼傽僀儖傪僶僀僫儕僼傽僀儖偵曄峏偡傞丅                */
/* 堷悢       : txtFileName:	i   暥杮僼傽僀儖柤徧                      */
/*              binFileName:	i	僶僀僫儕僼傽僀儖柤徧                  */  
/* 栠傝抣     : 惓忢(=0) 堎忢(=-1)                                        */
/*                                                                        */
/**************************************************************************/
int IRMSChgTxt2Bin(char * txtfName, char *binfName)
{
	/*斈梡僶僢僼傽乕*/
	char tBuff[TBUFF_SIZE_MAX];
	/*斈梡僶僢僼傽乕*/
	char tBuff2[TBUFF_SIZE_MAX];
	/*惍棟屻偺僶僢僼傽乕*/
	char sBuff[SBUFF_SIZE_MAX];
	/*僼傽僀儖僴儞僪儖*/
	FILE * fp;
	/*斈梡栠傝抣*/
	char *rtnFlg;
	/*惍棟屻偺僶僢僼傽乕嶕堷*/
	int sIdx = 0;
	/*僼傽僀儖崁栚僒僀僘*/
	int len = 0;
	/*斈梡栠傝抣*/
	int rtn = -1;
	/*僼傽僀儖撉崬傓惉岟幐攕僼儔僢僌*/
	int flg;
	char txtFileName[64];
	char binFileName[64];

	/*僶僢僼傽乕弶婜壔張棟*/
	memset(tBuff,0x00,sizeof(tBuff));
	memset(sBuff,0x00,sizeof(sBuff));
	memset(tBuff2, 0x00, sizeof(tBuff2));
	/*僼傽僀儖柤徧傪嶌惉偡傞丅*/
	sprintf(txtFileName, "%s%s", PATH, txtfName);
	sprintf(binFileName, "%s%s", PATH, binfName);
	/*TXT僼傽僀儖傪OPEN*/
	fp = NULL;
	fp = fopen(txtFileName, "r");
	/*庒偟僼傽僀儖奐偗傞幐攕偺応崌*/
	if(NULL == fp)
	{
		return -1;
	}
	/*僼傽僀儖撉崬傓惉岟枖偼幐攕僼儔僢僌弶婜壔*/
    flg = 0;
	/*EOF傑偱張棟傪孞傝曉偡*/
	while(1)
	{
		/*僼傽僀儖撪梕撉崬傓栠傝抣弶婜壔*/
		rtnFlg = NULL;
		/*僶僢僼傽乕弶婜壔*/
		memset(tBuff,0x00,sizeof(tBuff));
		memset(tBuff2,0x00,sizeof(tBuff2));
		/*堦儔僀儞棉袄傪撉崬傓*/
		rtnFlg = fgets(tBuff,sizeof(tBuff),fp);
		if(feof(fp))
		{
		    break;
		}
		/*庒偟撉崬傓幐攕偺応崌*/
		if(NULL == rtnFlg)
		{
		    flg = -1;
			break;
		}
		len = 0;
		/*僼傽僀儖崁栚傪庢摼偡傞丅*/
		rtn = IRMSGetFileItem(tBuff,tBuff2,&len);
		/*僼傽僀儖崁栚庢摼幐攕偺応崌*/
		if(-1 == rtn)
		{
			flg = -1;
			break;
		}
        /*庢摼偟偨僨乕僞僒僀僘傪敾抐偡傞丅*/
		if(0 == len)
		{
		    continue;
		}
		/*僼傽僀儖偐傜庢摼偟偨僶僀僩攝楍傪僶僢僼傽乕偵奿擺偡傞丅*/
		memcpy(&sBuff[sIdx], tBuff2, len);
		/*僶僢僼傽乕嶕堷峏怴*/
		sIdx += len;
	}
	/*僼傽僀儖暵偠傞丅*/
	fclose(fp);
	fp = NULL;
	/*僼傽僀儖撉崬傓幐攕偺応崌丄-1偑栠偝傟傞丅*/
	if(-1 == flg)
	{
	    return -1;
	}
	/*僶僀僫儕僼傽僀儖傪奐偗傞丅庒偟僼傽僀儖懚嵼偟偰偄側偄応崌丄嶌惉偡傞丅*/
	fp = fopen(binFileName, "w+b");
	if(NULL == fp)
	{
	   return -1;
	}
	/*僶僢僼傽乕拞偵奿擺偡傞僨乕僞傪僼傽僀儖偵弌椡偡傞丅*/
	rtn = (int)fwrite(sBuff, sizeof(char),SBUFF_SIZE_MAX,fp);
	if(rtn <= 0)
	{
	   fclose(fp);
	   return -1;
	}
	/*僼傽僀儖傪暵偠傞丅*/
	fclose(fp);
    return 0;
}
/**************************************************************************/
/*                                                                        */
/* 娭悢柤     : IRMSGetFileItem                                           */
/* 張棟奣梫   : 暥杮僼傽僀儖偺崁栚傪庢摼偡傞丅                            */
/* 堷悢       : iBuff:	i   惍棟慜偺暥帤楍僶僢僼傽乕                      */
/*              oBuff:	o   惍棟屻偺僶僀僩僶僢僼傽乕                      */  
/*              oSize:	o	惍棟屻偺僶僀僩僶僢僼傽乕僒僀僘                */  
/* 栠傝抣     : 惓忢(=0) 堎忢(=-1)                                        */
/*                                                                        */
/**************************************************************************/
int IRMSGetFileItem(char *iBuff, char *oBuff, int * oSize)
{
	/*暥帤楍挿*/
	int len;
	int i;
	int j;
	unsigned int	iData;/*斈梡惍悢*/
	unsigned long	lData;/*斈梡挿惍悢*/
	unsigned short	uData;/*斈梡抁惍悢*/
	char tBuff[TBUFF_SIZE_MAX];

	memset(tBuff,0x00,sizeof(tBuff));
	/*柍岠僷儔儊乕僞愝掕偟偨応崌*/
	if(NULL == iBuff)
	{
	    return -1;
	}
	len = (int)strlen(iBuff);
	/*愝掕偟偨暥帤楍僒僀僘僠僃僢僋*/
	if(len <= 0)
	{
	   return -1;
	}
	/*LF僋儕傾*/
	for(i = 0, j = -1; i < len; i++)
	{
		/*LF偺応崌丄0偵曄峏偡傞丅*/
		if(0x0A == iBuff[i]){
		   iBuff[i] = 0x00;
		   j = i;
		}
		/*LF屻偺暥帤慡懱僋儕傾乕*/
		if(j>= 0 && j < i){
		   iBuff[i] = 0x00;
		}
	}
	/*惍棟屻偺暥帤楍僒僀僘傪寁嶼偡傞丅*/
	len = (int)strlen(iBuff);
	/*2偮暥帤埲忋張棟懕乆*/
	if(len < 2)
	{
	     *oSize = 0;
		 return 0;
	}
	/*摢暥帤埲奜偺暥帤傪椪帪僶僢僼傽乕偵僐僺乕偡傞丅*/
	memcpy(tBuff,&iBuff[1], len -1);
	/*僒僀僘傪嵞寁嶼偡傞丅*/
	len = (int)strlen(tBuff);
	if(FRE_CMT == iBuff[0])
	{
	     *oSize = 0;
		 return 0;
	}
	/*16恑偺応崌*/
	else if(FRE_16 == iBuff[0])
	{
		/*2僶僀僩偺応崌:X0102*/
		if(sizeof(short) == len/2)
		{
			sscanf(tBuff, "%2x%2x", &oBuff[0],&oBuff[1]);
			*oSize = len/2;
		}
		/*4僶僀僩偺応崌:X01020304*/
		else if(sizeof(int) == len/2)
		{
		    sscanf(tBuff, "%2x%2x%2x%2x", &oBuff[0],&oBuff[1],&oBuff[2],&oBuff[3]);
			*oSize = len/2;
		}
		/*1僶僀僩偺応崌:X01*/
		else if(sizeof(char) == len/2)
		{
		    sscanf(tBuff,"%2x", &oBuff[0]);
			*oSize = len/2;
		}
		/*偦偺懠応崌*/
		else{
			return -1;
		}
	}
	/*暥帤楍偺応崌*/
	else if(FRE_STR == iBuff[0])
	{
	    memcpy(oBuff, tBuff,len);
		*oSize = len;
	}
	/*挿惍悢偺応崌*/
	else if(FRE_LONG == iBuff[0])
	{
		lData = atol(tBuff);
		memcpy(oBuff,&lData,sizeof(long));
		*oSize = sizeof(long);
	}
	/*惍悢偺応崌*/
	else if(FRE_INT == iBuff[0])
	{
		iData = atoi(tBuff);
		memcpy(oBuff, &iData, sizeof(int));
		*oSize = sizeof(int);
	}
	/*擭丄寧丄擔丄帪丄暘丄昩偺応崌*/
	else if(FRE_YEAR	== iBuff[0] || //擭偺応崌
		    FRE_MONTH	== iBuff[0] || //寧偺応崌
			FRE_DAY		== iBuff[0] || //擔偺応崌
			FRE_HOUR	== iBuff[0] || //帪偺応崌
			FRE_MINUTE	== iBuff[0] || //暘偺応崌
			FRE_SECOND  == iBuff[0])   //昩偺応崌
	{
	   uData = (unsigned short)atoi(tBuff);
	   oBuff[0] = SINTBCD(uData);
	   *oSize = sizeof(char);

	}
	/*偦偺懠偺応崌丄堎忢偲偡傞*/
	else
	{
		return -1;
	}
	return 0;
}

/**************************************************************************/
/*                                                                        */
/* 娭悢柤     : main                                                      */
/*                                                                        */
/**************************************************************************/
int main(int argc, char *argv[])
{
    /*儐乕僓擖椡偟偨僐儅儞僪暥帤楍*/
	char cmdLine[64];
	/*嶌惉偟偨僼傽僀儖柤徧*/
	char txtFileName[64];
	/*斈梡栠傝抣*/
	int rtn;
	/*q枖偼Q僐儅儞僪傑偱張棟傪孞傝曉偡*/
	while(1)
	{
		printf("***************************************\n");
		printf("*僼傽僀儖柤徧傪擖椡偟偰壓偝偄丗       *\n");
		printf("*嘆僙僌儊儞僩_僆僼僙僢僩              *\n");
		printf("*嘇僔儞儃儖_僆僼僙僢僩                *\n");
		printf("*嘊僔儞儃儖                           *\n");
		printf("*嘋q丗戅弌                            *\n");
		printf("***************************************\n");
		/*儐乕僓擖椡僐儅儞僪傪庢摼偡傞丅*/
		gets(cmdLine) ;
		/*僐儅儞僪僒僀僘傪敾抐偡傞丅*/
		if(strlen(cmdLine) > 0)
		{
			/*庒偟q枖偼Q偺応崌丄僾儘僌儔儉廔巭偡傞丅*/
			if(cmdLine[0] == 'q' || cmdLine[0] == 'Q')
			{
				break;
            /*q枖偼Q埲奜偺応崌丄僼傽僀儖柤徧偲偟偰張棟偡傞丅*/
			}else
			{
				/*txt僼傽僀儖柤徧傪嶌惉偡傞丅*/
				memset(txtFileName, 0x00, sizeof(txtFileName));
				sprintf(txtFileName, "%s%s", cmdLine, ".txt");
				/*txt僼傽僀儖偐傜僶僀僫儕僼傽僀儖偵曄姺偡傞丅*/
				rtn = IRMSChgTxt2Bin(txtFileName,cmdLine);
				/*庒偟曄姺幐攕偺応崌丄僄儔乕儊僢僙乕僕傪採帵偡傞丅*/
				if(rtn < 0)
				{
					printf("ERROR:擖椡偟偨僼傽僀儖柤徧傪娫堘偄傑偟偨丅\n");
					continue;
				}
			}
		/*偦偺偨応崌丄張棟傪孞傝曉偡*/
		}else
		{
			continue;
		}
	}

}

⌨️ 快捷键说明

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