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

📄 inifile.c

📁 自动侦测插入的存贮设备(U盘/移动硬盘等)
💻 C
字号:
#define MEMO '#'#include "stdio.h"#include "string.h"#include "stdlib.h"#include "inifile.h"/*功能:在str中是否存在substr返回:substr第一次在str中出现的位置*/int instr(char *str,char *substr){	int i,j;	int sublen,flag;		if(str==NULL||substr==NULL)		return 0;	sublen=strlen(substr);	flag=0;	for(i=0;i<=strlen(str)-sublen;i++)	{		for(j=0;j<sublen;j++)		{			if(*(str+i+j)!=*(substr+j))				break;		}		if(j==sublen)		{			flag=1;			break;		}	}	if(!flag)		i=-1;	return i;}/*功能:读取某个文件中某个变量的值返回:成功1,失败0*/int readfield(char *filename,char *domain,char *fieldname,char *fieldvalue){	FILE *fp;	int len,flag;	int i;	char tmp[MAXLEN];	char *p,*str,*p2;		if((fp=fopen(filename,"r"))==NULL)	{		return 0;	}		flag=0;	if(domain!=NULL)	{		while(!feof(fp))		/*Find domain*/		{			bzero(tmp,MAXLEN);			fgets(tmp,MAXLEN,fp);			sprintf(tmp,"%s",trim(tmp));			if(tmp[0]!='[')				continue;			i=instr(tmp,"]");			if(i>=0)				*(tmp+i)='\0';			else				continue;			if(strcmp(domain,tmp+1)==0)				break;		}		if(feof(fp))		{			fclose(fp);			return 0;		}		flag=1;				/*Find var in domain*/	}	while(!feof(fp))			/*Find variable's value*/	{		bzero(tmp,MAXLEN);		fgets(tmp,MAXLEN,fp);		sprintf(tmp,"%s",trim(tmp));		if(tmp[0]==MEMO||strlen(tmp)<1)			continue;		if(tmp[0]=='['&&flag)			break;		for(p=tmp;*p!='\0'&&*p!='#'&&*p!='=';p++);		if(*p!='=')			continue;		*p='\0';		p++;		sprintf(tmp,"%s",trim(tmp));		if(strcmp(tmp,fieldname)!=0)			continue;		str=p;		for(;*p!='\0'&&*p!='#'&&*p!='\r'&&*p!='\n';p++);		*p='\0';		sprintf(fieldvalue,"%s",trim(str));		fclose(fp);		return 1;	}	fclose(fp);	return 0;}/*功能:得到所有域名的列表返回:成功1,失败0*/int getalldomain(char *filename,struct domain *head){	FILE *fp;	struct domain *p;	char tmp[MAXLEN];	int i;	if((fp=fopen(filename,"r"))==NULL)		return 0;	p=head;	bzero(p->dname,MAXLEN);	while(!feof(fp))	{		bzero(tmp,MAXLEN);		fgets(tmp,MAXLEN,fp);		sprintf(tmp,"%s",trim(tmp));		if(tmp[0]!='[')			continue;		i=instr(tmp,"]");		if(i>=0)			*(tmp+i)='\0';		else			continue;		p->next=(struct domain *)malloc(sizeof(struct domain));		p=p->next;		bzero(p->dname,MAXLEN);		sprintf(p->dname,"%s\0",tmp+1);	}	p->next=NULL;	fclose(fp);	return 1;}/*功能:得到某个域中所有的变量列表返回:成功1,失败0*/int getallvar(char *filename,char *domain,struct variable *head){	FILE *fp;	struct variable *p;	char tmp[MAXLEN];	char *ch;	int flag;	int i;		if((fp=fopen(filename,"r"))==NULL)		return 0;	flag=0;	p=head;	bzero(p->val.vname,MAXLEN);	bzero(p->val.vval,MAXLEN);	if(domain!=NULL)	{		while(!feof(fp))		/*Find domain*/		{			bzero(tmp,MAXLEN);			fgets(tmp,MAXLEN,fp);			sprintf(tmp,"%s",trim(tmp));			if(tmp[0]!='[')				continue;			i=instr(tmp,"]");			if(i>=0)				*(tmp+i)='\0';			else				continue;			if(strcmp(domain,tmp+1)==0)				break;		}		if(feof(fp))		{			fclose(fp);			return 0;		}		flag=1;				/*Find var in domain*/	}		while(!feof(fp))			/*Find variable's value*/	{		bzero(tmp,MAXLEN);		fgets(tmp,MAXLEN,fp);		sprintf(tmp,"%s",trim(tmp));		if(tmp[0]==MEMO||strlen(tmp)<1)			continue;		if(tmp[0]=='['&&flag)			break;		i=instr(tmp,"=");		if(i>0)		{			ch=tmp+i;			*ch='\0';			ch++;		}		else			continue;		p->next=(struct variable *)malloc(sizeof(struct variable));		p=p->next;		bzero(p->val.vname,MAXLEN);		bzero(p->val.vval,MAXLEN);		sprintf(p->val.vname,"%s\0",tmp);		i=instr(ch,"#");		if(i>=0)			*(ch+i)='\0';		sprintf(p->val.vval,"%s\0",ch);	}	fclose(fp);	p->next=NULL;	return 1;}

⌨️ 快捷键说明

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