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

📄 unionenv.c

📁 这是个unix环境下的通讯程序
💻 C
字号:
#include <stdio.h>#include <ctype.h>#include "UnionEnv.h"//golbal  variablePUnionEnviVariable	pUnionEnvi[MAXUNIONENVIVARIABLES]; int			UnionEnviVarNum = 0;int UnionGetEnviVarNum(){	return(UnionEnviVarNum);}char *UnionGetEnviVarByIndex(int index){	if (index >= UnionEnviVarNum)		return(NULL);			if (index > MAXUNIONENVIVARIABLES)		return(NULL);		if (pUnionEnvi[index] == NULL)		return(NULL);			return(pUnionEnvi[index]->pVariableValue);}	char *UnionGetEnviVarNameByIndex(int index){	if (index >= UnionEnviVarNum)		return(NULL);			if (index > MAXUNIONENVIVARIABLES)		return(NULL);		if (pUnionEnvi[index] == NULL)		return(NULL);			return(pUnionEnvi[index]->pVariableName);}	char *UnionGetEnviVarByName(char *varname){	int i;	int j;	char buf1[128],buf2[128];		if (strlen(varname) >= 128)		return(NULL);		for (i=0;i<strlen(varname);i++)	{		buf1[i] = toupper(varname[i]);	}	buf1[i] = 0;		for (i=0;i<UnionEnviVarNum;i++)	{		if (pUnionEnvi[i] == NULL)			continue;				if (pUnionEnvi[i]->pVariableName == NULL)			continue;			if (strlen(varname) != strlen(pUnionEnvi[i]->pVariableName))			continue;				for (j = 0;j<strlen(pUnionEnvi[i]->pVariableName);j++)			buf2[j] = toupper(pUnionEnvi[i]->pVariableName[j]);		buf2[j] = 0;					if (strcmp(buf1,buf2) == 0)			return(pUnionEnvi[i]->pVariableValue);	}		return(NULL);}				PUnionEnviVariable ReadUnionEnviVarFromStr(char *str){	int 	i;	int	j;	char	varname		[512];	char	varvalue	[512];	PUnionEnviVariable pvar;	int	len;		if (str == NULL)		return(NULL);			len = strlen(str);		for (i=0;i<len;i++)	{		if (str[i] == '[')			break;		if (str[i] == '\0')			return(NULL);	}	if (i == len)		return(NULL);					for (++i,j=0;i < len;i++,j++)	{		if (str[i] == '\0')			return(NULL);					if (str[i] == ']')			break;				if (isalnum(str[i]) || isspace(str[i]) || (str[i] == '_') || (str[i] == '.') || (str[i] == ' ') || (str[i] == '-'))			varname[j] = str[i];		else			return(NULL);	}	if (i == len)		return(NULL);	varname[j] = '\0';	for (++i;i<len;i++)	{		if (str[i] == '[')			break;			if (str[i] == '\0')			return(NULL);	}	if (i == len)		return(NULL);		for (++i,j=0;i<len;i++,j++)	{		if (str[i] == '\0')			return(NULL);		if (str[i] == ']')			break;		varvalue[j] = str[i];	}	if (i == len)		return(NULL);	varvalue[j] = '\0';		pvar = (PUnionEnviVariable)malloc(sizeof(TUnionEnviVariable));	if (pvar == NULL)		return(NULL);		if ((pvar->pVariableName = (char *)malloc(strlen(varname)+1)) == NULL)	{		free(pvar);		return(NULL);	}		if ((pvar->pVariableValue = (char *)malloc(strlen(varvalue)+1)) == NULL)	{		free(pvar->pVariableName);		free(pvar);		return(NULL);	}		strcpy(pvar->pVariableName,varname);	strcpy(pvar->pVariableValue,varvalue);		return(pvar);}int UnionReadOneFileLine(FILE *fp,char *buf){	char *p;	char c;	int  num;		p = buf;	num = 0;	while (!feof(fp))	{		fscanf(fp,"%c",&c);		if (c == '\n')		{			*p = 0;			return(num);		}		*p = c;		p++;		num++;	}		*p = 0;	return(num);}int UnionInitEnvi(char *filename){	int 	i;	char	buf[512];	FILE	*fp;		for (i=0;i<MAXUNIONENVIVARIABLES;i++)	{		//if (pUnionEnvi[i] != NULL)		//	free(pUnionEnvi[i]);		pUnionEnvi[i] = NULL;	}		if ( (fp = fopen(filename,"r")) == NULL)	{		return(-1);	}		UnionEnviVarNum = 0;		for (;;)	{		memset(buf,0,512);		if (feof(fp))			break;		if (UnionReadOneFileLine(fp,buf) < 0)			break;		pUnionEnvi[UnionEnviVarNum] = ReadUnionEnviVarFromStr(buf);		if (pUnionEnvi[UnionEnviVarNum] == NULL)			continue;				UnionEnviVarNum++;	}			fclose(fp);		UnionLog("in UnionInitEnv:: UnionEnviVarNum = [%d]\n",UnionEnviVarNum);	return(0);}int UnionClearEnvi(){	int i;		for (i=0;i<UnionEnviVarNum;i++)	{		if (pUnionEnvi[i] == NULL)			continue;		if (pUnionEnvi[i]->pVariableName)		{			if (free(pUnionEnvi[i]->pVariableName) != 0)				;		}		if (pUnionEnvi[i]->pVariableValue)		{			if (free(pUnionEnvi[i]->pVariableValue) != 0)				;		}		if (free(pUnionEnvi[i]) != 0)				;	}	return(0);}

⌨️ 快捷键说明

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