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

📄 cfgloader.c

📁 hid类主机对打印机操作的应用例程
💻 C
字号:
// CfgLoader.cpp: implementation of the CCfgLoader class.



#include <string.h>
#include <stdio.h>
#include "CfgLoader.h"

//#define DEBUG

void getErrMsg(char* errMsg)
{
	FILE* fpp=fopen("log.txt","a+");
	fprintf(fpp,"无法打开文件%s\n",errMsg);
	fclose(fpp);
}
/*
void log(char* tt)
{
	FILE* fpp=fopen("log.txt","a+");
	fprintf(fpp,"%s\n",tt);
	fclose(fpp);
}
*/

CfgItem* loadCfg(char* filename, char* devtype)
{
	int i;
	int itemnum=0;
	int len = 1024;	
	char buf[1024];		
	char *pstart=NULL;
	char *pend=NULL;
	char *pch=NULL;
    char filepath[256];
	FILE *fp;

	#ifdef WIN32
		strcpy(filepath, ".\\driver\\");
	#else
		strcpy(filepath, "./driver/");
	#endif	
	
	strcat(filepath,filename);
	
	fp=fopen(filepath,"r");
	if(fp==NULL)
	{
		getErrMsg(filepath);
		fclose(fp);
		return NULL;
	}

		
	while(1) 
	{
		if(!fgets(buf,len,fp))
			break;
		
		if( (pstart = strchr(buf, '[')) == NULL
	           || (pend = strchr(buf, ']')) ==NULL )
			   continue;
		if((pch = strchr(buf, ';')) != NULL) 
		{
			if ( pch<pstart || pch<pend)
				continue;
		}
		
		if (pstart>pend)
			continue;

		*pend = 0x00;
        if (strcmp(devtype, pstart+1))
			continue;
		
		while(1) 
		{		
			memset(buf, 0x00, len);
			if(!fgets(buf,len,fp))
				break;
			
			
			if(buf[0] == '[') 
				break;
			
			
			for(i=strlen(buf)-1; i>=0; i--) 
			{
				if(buf[i] == '\r' || buf[i] == '\n') 
					buf[i] = 0x00;
				else 
					break; 	
			}
			
			if(buf[0] == 0x00) 
				break;
			
			memset(Item[itemnum].name,0x00,len);
			memset(Item[itemnum].value, 0x00, len);
			Item[0].item_num = 0;

			
			if((pch=strtok(buf, "=")) !=NULL)
				memcpy(Item[itemnum].name,buf,strlen(buf));
			else
				memset(Item[itemnum].name, 0x00, sizeof(Item[itemnum].name));

			if((pch=strtok(NULL, "=")) != NULL)			
				memcpy(Item[itemnum].value, pch, strlen(pch));
			else 
				memset(Item[itemnum].value, 0x00, sizeof(Item[itemnum].value));
			
			#ifdef DEBUG
			log(Item[itemnum].name);		
			log(Item[itemnum].value);
			printf("the name is:%s\n",Item[itemnum].name);
			printf("the value is:%s\n",Item[itemnum].value);
			#endif
			
			itemnum++;
			Item[itemnum].item_num=itemnum;
		}
		
		Item[0].item_num = itemnum;
		
		#ifdef DEBUG
		printf("the item_num is:%d\n",Item[0].item_num);
		#endif

		return Item;
	}
	
	fclose(fp);
	return NULL;	
}

/*
int main()
{
	loadCfg("term.ini","终端类型1");
	return 0;
}
*/


⌨️ 快捷键说明

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