亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hvini.c

?? 一個可以在linux unix 和 windows讀配置文件
?? C
字號:
/*************************************************  Copyright (C), 2004, DHC  File name:     hvini.c  Author:    韋昭   Version:   V1.0     Date:  2004-8-27  Description:    大額支付ini文件處理程序  Others:   Function List:  (函數定義,實現在hvini.c文件中)	1. int hv_readIni(char *filename,char *section,char *item,char *value)		讀取ini文件中某一項的值,filename為文件名,section為節名,item為項名,		value為讀取得到的值(最長255個字符).		成功返回0,失敗返回-1	2.int hv_writeIni(char *filename,char *section,char *item,char *value)		設置ini文件中某一項的值,filename為文件名,section為節名,item為項名,		value為要設置的值		成功返回0,失敗返回-1		內部函數,只供內部調用	1.  int  fgetline(FILE *fp, char *buffer, int maxlen)	    讀取文件中的一行寫入buffer中去,最大取maxlen個字節。    2.  int  getItem(FILE *fp,char *section,char *item,char *val)	    獲取section下item的值,放入val中,返回值請看函數說明    3.  int  splitItem(char *str)	    得到一個item的值,去掉前面的空格等。    4.  int  writeLine(char *filename,char *buf,int line_no)	    在filename中的第line_no處修改或插入buf中的數據		line_no為0時,表示在文件最后插入。		line_no為正數時表示在原行修改;		line_no為負數時表示在下一行插入。  History:       1. Date:     2004-8-27       Author:   韋昭       Modification: 建立*************************************************/#include "hvini.h"/*內部函數定義區*/int  fgetline(FILE *fp, char *buffer, int maxlen);int  getItem(FILE *fp,char *section,char *item,char *val);int  splitItem(char *str);int  writeLine(char *filename,char *buf,int line_no);/*************************************************  Function:       int hv_readIni(char *filename,char *section,char *item,char *value)  Description:    讀取ini文件中某一項的值,filename為文件名,section為節名,item為項名,		          value為讀取得到的值(最長255個字符).  Calls:          getItem()                    Called By:        Table Accessed: 無  Table Updated:  無  Input:    1 char *filename為文件名            2 char *section為節名			3 char *item為項名  Output:   value值,就是item的內容  Return:   成功返回0,失敗返回-1  Others:   *************************************************/int hv_readIni(char *filename,char *section,char *item,char *value){	FILE *fp;	int p;	if((fp = fopen(filename,"r"))==NULL)	{		printf("Cannot read file:%s\n",filename);		return  INI_OP_FAIL;	}		p = getItem(fp,section,item,value);		fclose(fp);	if(p>0)	   return INI_OP_SUCCEE;	else 		return INI_OP_FAIL;}/*************************************************  Function:       int hv_writeIni(char *filename,char *section,char *item,char *value)  Description:    設置ini文件中某一項的值,filename為文件名,section為節名,item為項名,		          value為要設置的值  Calls:          1 getItem(fp,section,item,val)                  2 writeLine(filename,buf,n)  Called By:        Table Accessed: 無  Table Updated:  無  Input:    1 char *filename為文件名;            2 char *section為節名;			3 char *item為項名.  Output:   無  Return:   成功返回0,失敗返回-1  Others:   *************************************************/int hv_writeIni(char *filename,char *section,char *item,char *value){	FILE *fp;	char val[HV_INI_MAX_LEN];	char buf[2*HV_INI_MAX_LEN];      /*當section和item都不存在時,buf為兩行*/	int n;		/*變量的初始化*/	n = 0;	/*查找要插入的位置*/	if((fp = fopen(filename,"r"))==NULL)	{		printf("Cannot read file:%s\n",filename);		return  INI_OP_FAIL;	}	n = getItem(fp,section,item,val);	fclose(fp);    /*插入內容*/	if( n != 0 )	{   /*修改或是在確定行數中插入時*/		snprintf(buf,HV_INI_MAX_LEN,"%s=%s",item,value);	}	else	{   /*在文件最后插入時*/		snprintf(buf,2*HV_INI_MAX_LEN,"[%s]\n%s=%s",section,item,value);	}	writeLine(filename,buf,n);		return INI_OP_SUCCEE;}/*-----------------------------------------------*//*            以下為內部函數                     *//*-----------------------------------------------*//*************************************************  Function:       int  fgetline(FILE *fp, char *buffer, int maxlen);  Description:    設置ini文件中的一行。放入buffer中,返回讀取的字數  Calls:            Called By:        Table Accessed: 無  Table Updated:  無  Input:      Output:   無  Return:   文件結束返回-1,出現錯誤返回-2,成功返回讀到的字數.  Others:   *************************************************/int  fgetline(FILE *fp, char *buffer, int maxlen){	int  i;	memset(buffer, 0x00, maxlen);	if(fgets(buffer, maxlen, fp) == NULL)	{		i = strlen(buffer); 		if(feof(fp) != 0) 		{ 		  if(i == 0) return -1;                 /* 文件結束 */ 		} 		else return -2;                         /* 出現錯誤 */ 	}		i = strlen(buffer); 	if(i > 0 && buffer[i-1] == '\n') 		buffer[--i] = '\0'; 	return i;}/*************************************************  Function:       int getItem(FILE *fp,char *section,char *item,char *val)  Description:    從fp文件中找到對應section下的Item,返回Item所在的行數                  正數為Item所在的行(存該section和Item);				  負數為section所在的行(存在section但不存在item);				  0為不存該section也不存在該Item  Calls:          fgetline(fp,buf,HV_INI_MAX_LEN)  Called By:      1. hv_readIni()                  2. hv_writeIni()  Table Accessed: 無  Table Updated:  無  Input:      Output:   無  Return:   存在要找的section,不存在item返回負的section的行數;       不存在要找的section和item,返回HV_INI_NO_EXIST       成功返回item的行數.  Others:   *************************************************/int getItem(FILE *fp,char *section,char *item,char *val){	int n;	int valP;                /*用于記錄在item行掃描時的位置*/	int isItem;	int itemLength;	int line_no;	int section_line ;	char buf[HV_INI_MAX_LEN];	line_no = 0;	section_line = line_no;	itemLength = strlen(item);    /*第一次掃描,尋找section*/	while(1)	{		n=fgetline(fp,buf,HV_INI_MAX_LEN);		if(n<0)		{			return HV_INI_NO_EXIST;		}		line_no++;		/*如果本行為空或是以;開頭,跳過*/		if(n == 0 || buf[0] == ';')		{			continue;		}        /*以行不是以[或是{開頭和發]或是}結尾的,或是不到3個的,跳過*/		if(n<3 || ( (buf[0]=='[' && buf[n-1] != ']') || 			(buf[0]=='{' && buf[n-1] != '}') )  )		{			continue;		}		if(buf[0] == '[' || buf[0] == '{')		{			buf[n-1] = 0x00; 			if(strcmp(buf+1, section) == 0)                 break;		}	}	/*找到Item*/	section_line = line_no;	while(1)	{		n = 0;		isItem = 0;		n = fgetline(fp,buf,HV_INI_MAX_LEN);		if(n<0)		{			return -section_line;   /*不存在Item*/		}		line_no++;				if(n == 0 || buf[0] == ';')/*空行或是注釋*/		{			continue;		}		if(n>2 && (buf[0] == '[' || buf[0] == '{'))/*已經到下一個section了*/		{			return -section_line;		}		if(n>1)		{			valP=0;			while(valP<strlen(buf))			{				if(buf[valP]==' ' || buf[valP] == '\t')				{					valP++;					continue;				}                break;			}			isItem = memcmp(buf+valP,item,itemLength);			valP += itemLength;			if(isItem == 0)			{				while(valP<strlen(buf))				{					if(buf[valP]==' ' || buf[valP] == '\t')					{						valP++;						continue;					}					break;				}				if(buf[valP] == '=')				{					valP++;					while(valP<strlen(buf))					{						if(buf[valP]==' ' || buf[valP] == '\t')						{							valP++;							continue;						}						break;					}					memcpy(val,buf+valP,n-valP);					val[n-valP]='\0';					return line_no;				}				return -section_line;			}			continue;		}	}    val[0] = '\0';	return HV_INI_NO_EXIST;}/*************************************************  Function:       int  writeLine(char *filename,char *buf,int line_no)  Description:    在文件filename中的第line_no行插入buf.  Calls:          fgetline(fp,val,HV_INI_MAX_LEN)  Called By:      hv_writeIni  Table Accessed: 無  Table Updated:  無  Input:    1 filename,插入的文件名。            2 buf,插入的內容。			3 line_no,插入的行數。  Output:   無  Return:     Others:   *************************************************/int  writeLine(char *filename,char *buf,int line_no){	FILE *fp;	FILE *tempfp;	char val[HV_INI_MAX_LEN];	char tempfile[HV_FILE_NAME_LEN];	int n;	int line;	line = 0;	memcpy(tempfile,filename,strlen(filename));	sprintf(tempfile,"%s.%d.temp",filename,getpid);	memcpy(tempfile+strlen(filename),".temp",5);	tempfp = fopen(tempfile,"w+");	fp = fopen(filename,"r");	while(1)	{		n = fgetline(fp,val,HV_INI_MAX_LEN);		if(n<0)		{			break;		}		line++;		if(line_no > 0 && line==line_no )/*line_no為正數,而且就是當前行的時候,修改*/		{			snprintf(val,HV_INI_MAX_LEN,"%s",buf);		}		if(line_no < 0 && line == -line_no )/*line_no為負數,而且其絕對等于line時,在后面補上*/		{			fprintf(tempfp,"%s\n",val);			memcpy(val,buf,strlen(buf));		}		fprintf(tempfp,"%s\n",val);	}	fclose(fp);	if(line_no == 0)	{		fprintf(tempfp,"%s\n",buf);	}	fclose(tempfp);	/*再寫進去*/	fp = fopen(filename,"w");	tempfp = fopen(tempfile,"r");	while(1)	{		n = fgetline(tempfp,val,HV_INI_MAX_LEN);		if(n>=0)		{			fprintf(fp,"%s\n",val);		}		else		{			break;		} 	}	fclose(tempfp);	fclose(fp);	/*刪除臨時文件*/	remove(tempfile);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看视频一区| 亚洲欧美一区二区三区久本道91 | 日韩欧美成人激情| 日韩精品91亚洲二区在线观看| 99re热视频这里只精品| 亚洲主播在线观看| 欧美中文一区二区三区| 日韩高清一区二区| 久久久五月婷婷| 波多野洁衣一区| 亚洲自拍欧美精品| 91精品国产欧美一区二区18| 天天综合天天综合色| 精品久久久久久久人人人人传媒 | 天堂一区二区在线| 欧美一区二区国产| 国产精品18久久久久久久久久久久| 久久午夜免费电影| 色综合夜色一区| 日韩成人av影视| 国产精品免费久久| 欧美日韩精品电影| 国产毛片精品一区| 亚洲自拍偷拍麻豆| 久久久久国产精品厨房| 欧美亚洲免费在线一区| 免费成人av在线| 亚洲日本成人在线观看| 欧美日韩精品高清| kk眼镜猥琐国模调教系列一区二区 | 国产激情视频一区二区在线观看| 中文字幕亚洲成人| 欧美变态口味重另类| 99re热这里只有精品免费视频| 免费人成精品欧美精品| 亚洲天堂成人在线观看| 欧美一区二区私人影院日本| 成人av高清在线| 麻豆精品新av中文字幕| 中文字幕亚洲在| 欧美精品一区二区蜜臀亚洲| 91国模大尺度私拍在线视频| 国产一区二区免费看| 亚洲国产裸拍裸体视频在线观看乱了| 精品国产亚洲在线| 欧美午夜一区二区三区免费大片| 国产真实精品久久二三区| 亚洲成人激情自拍| 亚洲图片激情小说| 欧美激情一区二区三区全黄| 日韩情涩欧美日韩视频| 91久久国产最好的精华液| 国产精品99久久久久久似苏梦涵| 日韩不卡手机在线v区| 亚洲丝袜另类动漫二区| 国产亚洲va综合人人澡精品 | 精品久久久久99| 欧美日韩在线播放| 色婷婷亚洲精品| 99国内精品久久| 国产成人精品亚洲777人妖| 日韩av一二三| 午夜精品视频在线观看| 亚洲一区二区三区美女| 亚洲欧美激情插| 亚洲特级片在线| 国产精品午夜春色av| 久久精品视频免费观看| 精品国产乱子伦一区| 日韩一级黄色片| 欧美tickling网站挠脚心| 在线播放亚洲一区| 欧美精品第1页| 欧美亚洲高清一区二区三区不卡| 91一区二区三区在线观看| 在线观看日韩av先锋影音电影院| 91美女片黄在线| 色88888久久久久久影院野外| 97久久超碰国产精品| av日韩在线网站| 91麻豆精品一区二区三区| 91网站在线观看视频| 91浏览器入口在线观看| 在线视频一区二区三区| 欧美日韩亚州综合| 91麻豆精品国产91久久久久久久久 | 91久久一区二区| 欧美专区在线观看一区| 欧美喷水一区二区| 日韩一区国产二区欧美三区| 欧美一区二区在线看| 精品国产成人在线影院| 国产精品久久久久影院老司| 1024成人网| 亚洲亚洲精品在线观看| 日本不卡高清视频| 国产盗摄视频一区二区三区| 粉嫩一区二区三区性色av| 91国产福利在线| 日韩欧美一区电影| 国产精品美女久久久久久2018| 日韩美女视频一区二区 | 亚洲3atv精品一区二区三区| 欧美aⅴ一区二区三区视频| 国产综合成人久久大片91| 不卡一区二区三区四区| 欧美性xxxxxxxx| 精品久久久久香蕉网| 亚洲欧洲日本在线| 五月天精品一区二区三区| 国产在线国偷精品产拍免费yy| 成人一级视频在线观看| 欧美色图免费看| 精品成人一区二区三区四区| 中文字幕欧美一区| 亚洲一区二区三区视频在线播放 | 国产精品久久久久久久午夜片 | 欧美日韩电影在线播放| 精品精品欲导航| 亚洲精品免费一二三区| 六月丁香婷婷色狠狠久久| www.激情成人| 精品日韩在线观看| 亚洲区小说区图片区qvod| 蜜桃91丨九色丨蝌蚪91桃色| heyzo一本久久综合| 日韩一区二区三区在线视频| 中文字幕一区二区三区四区不卡| 日本欧美一区二区三区乱码| 成人免费高清在线| 欧美大片在线观看一区二区| 亚洲欧美怡红院| 国产一区二区影院| 欧美区在线观看| 亚洲女子a中天字幕| 国产在线精品不卡| 51午夜精品国产| 亚洲一区二区三区在线| 国产盗摄视频一区二区三区| 日韩一级精品视频在线观看| 亚洲一区精品在线| av男人天堂一区| 欧美国产禁国产网站cc| 久久99精品一区二区三区| 欧美日韩一区二区三区四区五区| 国产精品婷婷午夜在线观看| 美国十次综合导航| 欧美精品99久久久**| 夜夜嗨av一区二区三区| 白白色 亚洲乱淫| 国产欧美日韩不卡| 国产精品主播直播| 欧美白人最猛性xxxxx69交| 调教+趴+乳夹+国产+精品| 91高清在线观看| 成人免费视频在线观看| 成人性色生活片| 国产欧美日韩不卡免费| 国产精品影视网| 久久久久久99精品| 韩国理伦片一区二区三区在线播放| 4438成人网| 免费观看30秒视频久久| 91精品国产综合久久小美女| 日日摸夜夜添夜夜添国产精品 | 免费成人性网站| 欧美老肥妇做.爰bbww视频| 午夜精彩视频在线观看不卡| 欧美午夜精品一区二区三区| 亚洲国产精品久久久久婷婷884| 欧美亚洲自拍偷拍| 亚洲小说春色综合另类电影| 欧美色图在线观看| 亚洲成av人片观看| 日韩一区二区三区观看| 久久99国产精品尤物| 欧美v亚洲v综合ⅴ国产v| 国产一区欧美一区| 日本一区二区三区在线观看| 成人午夜激情影院| 亚洲蜜臀av乱码久久精品| 色国产综合视频| 日韩激情一区二区| 精品国产乱码久久久久久蜜臀| 国产精品亚洲一区二区三区在线| 国产女人18毛片水真多成人如厕| 成人动漫av在线| 亚洲韩国一区二区三区| 日韩午夜在线影院| 国产伦理精品不卡| 亚洲久草在线视频| 91超碰这里只有精品国产| 黄页网站大全一区二区| 国产精品久久久久久久午夜片| 91国内精品野花午夜精品| 麻豆久久久久久| 日韩码欧中文字| 69p69国产精品| 成人午夜大片免费观看| 亚洲韩国一区二区三区|