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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? inifileop.c

?? 用C寫的INI文件的讀寫
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	if((fp = fopen((char *)CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /* 搜找項(xiàng)section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto r_cfg_end; 
		ret = CFG_SECTION_NOT_FOUND; 
		if(n < 0) goto r_cfg_end;                    /* 文件尾,未發(fā)現(xiàn) */ 
		line_no++; 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto r_cfg_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			if(strcmp(buf1+1, section) == 0) 
				break;                                   /* 找到項(xiàng)section */ 
		} 
	} 
	CFG_section_line_no = line_no; 
	while(1)                                       /* 搜找key */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto r_cfg_end; 
		ret = CFG_KEY_NOT_FOUND; 
		if(n < 0) goto r_cfg_end;                    /* 文件尾,未發(fā)現(xiàn)key */ 
		line_no++; 
		CFG_key_line_no = line_no; 
		CFG_key_lines = 1; 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_KEY_NOT_FOUND; 
		if(buf1[0] == CFG_ssl) goto r_cfg_end; 
		if(buf1[n-1] == '+')                         /* 遇+號(hào)表示下一行繼續(xù)  */ 
		{ 
			buf1[n-1] = 0x00; 
			while(1) 
			{ 
				ret = CFG_ERR_READ_FILE; 
				n = FileGetLine(fp, buf2, MAX_CFG_BUF); 
				if(n < -1) goto r_cfg_end; 
				if(n < 0) break;                         /* 文件結(jié)束 */ 
				line_no++; 
				CFG_key_lines++; 
				n = strlen(strtrimr(buf2)); 
				ret = CFG_ERR_EXCEED_BUF_SIZE; 
				if(n > 0 && buf2[n-1] == '+')            /* 遇+號(hào)表示下一行繼續(xù) */ 
				{ 
					buf2[n-1] = 0x00; 
					if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
						goto r_cfg_end; 
					strcat(buf1, buf2); 
					continue; 
				} 
				if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
					goto r_cfg_end; 
				strcat(buf1, buf2); 
				break; 
			} 
		} 
		ret = CFG_ERR_FILE_FORMAT; 
		if(SplitKeyValue(buf1, &key_ptr, &val_ptr) != 1) 
			goto r_cfg_end; 
		strtriml(strtrimr(key_ptr)); 
		if(strcmp(key_ptr, key) != 0) 
			continue;                                  /* 和key值不匹配 */ 
		strcpy(buf, val_ptr); 
		break; 
	} 
	ret = CFG_OK; 
r_cfg_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
} 

/**********************************************************************
* 函數(shù)名稱: ConfigSetKey
* 功能描述: 設(shè)置key的值
* 訪問的表: 無
* 修改的表: 無
* 輸入?yún)?shù): void *CFG_file 文件;void *section 項(xiàng)值;
* 			 void *key 鍵值;void *buf key的值
* 輸出參數(shù): 無
* 返 回 值:   0 --- ok 非0 --- error 
* 其它說明: 無
* 修改日期        版本號(hào)     修改人       修改內(nèi)容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創(chuàng)建
* 
***********************************************************************/
int  ConfigSetKey(void *CFG_file, void *section, void *key, void *buf)
{ 
	FILE *fp1, *fp2; 
	char buf1[MAX_CFG_BUF + 1]; 
	int  line_no, line_no1, n, ret, ret2; 
	char *tmpfname; 
	
	ret = ConfigGetKey(CFG_file, section, key, buf1); 
	if(ret <= CFG_ERR && ret != CFG_ERR_OPEN_FILE) return ret; 
	if(ret == CFG_ERR_OPEN_FILE || ret == CFG_SECTION_NOT_FOUND) 
	{ 
		
		if((fp1 = fopen((char *)CFG_file, "a")) == NULL) 
			
			return CFG_ERR_CREATE_FILE; 
		
		if(fprintf(fp1, "%c%s%c\n", CFG_ssl, section, CFG_ssr) == EOF) 
		{ 
			fclose(fp1); 
			return CFG_ERR_WRITE_FILE; 
		} 
		if(fprintf(fp1, "%s=%s\n", key, buf) == EOF) 
		{ 
			fclose(fp1); 
			return CFG_ERR_WRITE_FILE; 
		} 
		fclose(fp1); 
		return CFG_OK; 
	} 
	if((tmpfname = tmpnam(NULL)) == NULL) 
		return CFG_ERR_CREATE_FILE; 
	
	if((fp2 = fopen(tmpfname, "w")) == NULL) 
		
		return CFG_ERR_CREATE_FILE; 
	ret2 = CFG_ERR_OPEN_FILE; 
	
	if((fp1 = fopen((char *)CFG_file, "rb")) == NULL) goto w_cfg_end; 
	
	if(ret == CFG_KEY_NOT_FOUND) 
		line_no1 = CFG_section_line_no; 
	else /* ret = CFG_OK */ 
		line_no1 = CFG_key_line_no - 1; 
	for(line_no = 0; line_no < line_no1; line_no++) 
	{ 
		ret2 = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
		if(n < 0) goto w_cfg_end; 
		ret2 = CFG_ERR_WRITE_FILE; 
		if(fprintf(fp2, "%s\n", buf1) == EOF) goto w_cfg_end; 
	} 
	if(ret != CFG_KEY_NOT_FOUND) 
		for( ; line_no < line_no1+CFG_key_lines; line_no++) 
		{ 
			ret2 = CFG_ERR_READ_FILE; 
			n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
			if(n < 0) goto w_cfg_end; 
		} 
		ret2 = CFG_ERR_WRITE_FILE; 
		if(fprintf(fp2, "%s=%s\n", key, buf) == EOF) goto w_cfg_end; 
		while(1) 
		{ 
			ret2 = CFG_ERR_READ_FILE; 
			n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
			if(n < -1) goto w_cfg_end; 
			if(n < 0) break; 
			ret2 = CFG_ERR_WRITE_FILE; 
			if(fprintf(fp2, "%s\n", buf1) == EOF) goto w_cfg_end; 
		} 
		ret2 = CFG_OK; 
w_cfg_end: 
		if(fp1 != NULL) fclose(fp1); 
		if(fp2 != NULL) fclose(fp2); 
		if(ret2 == CFG_OK) 
		{ 
			ret = FileCopy(tmpfname, CFG_file); 
			if(ret != 0) return CFG_ERR_CREATE_FILE; 
		} 
		remove(tmpfname); 
		return ret2; 
} 

/**********************************************************************
* 函數(shù)名稱: ConfigGetSections
* 功能描述: 獲得所有section
* 訪問的表: 無
* 修改的表: 無
* 輸入?yún)?shù): void *CFG_file 文件
* 輸出參數(shù): char *sections[] 存放section名字
* 返 回 值: 返回section個(gè)數(shù)。若出錯(cuò),返回負(fù)數(shù)。
* 其它說明: 無
* 修改日期        版本號(hào)     修改人       修改內(nèi)容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創(chuàng)建
* 
***********************************************************************/
int  ConfigGetSections(void *CFG_file, char *sections[])
{ 
	FILE *fp; 
	char buf1[MAX_CFG_BUF + 1]; 
	int  n, n_sections = 0, ret; 
	
	
	if((fp = fopen(CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /*搜找項(xiàng)section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_scts_end; 
		if(n < 0) break;                             /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto cfg_scts_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			strcpy(sections[n_sections], buf1+1); 
			n_sections++; 
		} 
	} 
	ret = n_sections; 
cfg_scts_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
} 

/**********************************************************************
* 函數(shù)名稱: ConfigGetKeys
* 功能描述: 獲得所有key的名字(key=value形式, value可用加號(hào)表示續(xù)行)
* 訪問的表: 無
* 修改的表: 無
* 輸入?yún)?shù): void *CFG_file 文件 void *section 項(xiàng)值
* 輸出參數(shù): char *keys[] 存放key名字
* 返 回 值: 返回key個(gè)數(shù)。若出錯(cuò),返回負(fù)數(shù)。
* 其它說明: 無
* 修改日期        版本號(hào)     修改人       修改內(nèi)容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創(chuàng)建
* 
***********************************************************************/
int  ConfigGetKeys(void *CFG_file, void *section, char *keys[])
{ 
	FILE *fp; 
	char buf1[MAX_CFG_BUF + 1], buf2[MAX_CFG_BUF + 1]; 
	char *key_ptr, *val_ptr; 
	int  n, n_keys = 0, ret; 
	
	
	if((fp = fopen(CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /* 搜找項(xiàng)section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_keys_end; 
		ret = CFG_SECTION_NOT_FOUND; 
		if(n < 0) goto cfg_keys_end;                 /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto cfg_keys_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			if(strcmp(buf1+1, section) == 0) 
				break;                                   /* 找到項(xiàng)section */ 
		} 
	} 
	while(1) 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_keys_end; 
		if(n < 0) break;                             /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_KEY_NOT_FOUND; 
		if(buf1[0] == CFG_ssl) 
			break;                                     /* 另一個(gè) section */ 
		if(buf1[n-1] == '+')                         /* 遇+號(hào)表示下一行繼續(xù) */ 
		{ 
			buf1[n-1] = 0x00; 
			while(1) 
			{ 
				ret = CFG_ERR_READ_FILE; 
				n = FileGetLine(fp, buf2, MAX_CFG_BUF); 
				if(n < -1) goto cfg_keys_end; 
				if(n < 0) break;                         /* 文件尾 */ 
				n = strlen(strtrimr(buf2)); 
				ret = CFG_ERR_EXCEED_BUF_SIZE; 
				if(n > 0 && buf2[n-1] == '+')            /* 遇+號(hào)表示下一行繼續(xù) */ 
				{ 
					buf2[n-1] = 0x00; 
					if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
						goto cfg_keys_end; 
					strcat(buf1, buf2); 
					continue; 
				} 
				if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
					goto cfg_keys_end; 
				strcat(buf1, buf2); 
				break; 
			} 
		} 
		ret = CFG_ERR_FILE_FORMAT; 
		if(SplitKeyValue(buf1, &key_ptr, &val_ptr) != 1) 
			goto cfg_keys_end; 
		strtriml(strtrimr(key_ptr));
		strcpy(keys[n_keys], key_ptr); 
		n_keys++; 
	} 
	ret = n_keys; 
cfg_keys_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
}

/**********************************************************************
* 函數(shù)名稱: INIFileTstmain
* 功能描述: 測(cè)試函數(shù)入口
* 訪問的表: 無
* 修改的表: 無
* 輸入?yún)?shù): 無
* 輸出參數(shù): 無
* 返 回 值: 無
* 其它說明: 無
* 修改日期        版本號(hào)     修改人       修改內(nèi)容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創(chuàng)建
* 
***********************************************************************/
void INIFileTstmain(void)
{
	char buf[20]="";
	char buf1[20]="";
	char buf2[20]="";
	char buf3[20]="";
	int  ret;
	long abc;
	int i;
	
	char * section;
	char * key;
	char * val;
	char * name;
	char * index;
	section = buf1;
	key = buf2;
	val = buf3;
	
	ret = ConfigSetKey("Config.dat", "Jack:Lio", "Jack", "-12321");
	
	for(i = 0;i < 20; i++)
	{
		memset(buf,0x00,20);
		memset(buf1,0x00,20);
		memset(buf2,0x00,20);
		memset(buf3,0x00,20);
		sprintf(buf,"%d",i);
		sprintf(buf2,"Lio%d",i);
		sprintf(buf3,"%d",i);
		JoinNameIndexToSection(&section, "Jack", buf);
		ConfigSetKey("Config.dat", section, key, val);
	}
	
	name = buf2;
	index = buf3;
	memset(buf1,0x00,20);
	memset(buf2,0x00,20);
	memset(buf3,0x00,20);
	strcpy(buf1,"Jack:Lio");
	SplitSectionToNameIndex(section, &name, &index);
	printf("\n name=%s,index=%s\n",name,index);
	
	ret = ConfigGetKey("Config.dat", "Jack:Lio", "Jack", buf);
	if (strcmp(buf,"")!=0) {
		abc = atol(buf);
	}
	
	printf("\n buf=%s\n",buf);	
	printf("\n abc=%ld\n",abc);
	
	ConfigSetKey("Config.dat","Jack:Lio", "Email", "liaoyuewang@163.com");

	FileCopy("Config.dat", "Configbak.dat");

	printf("\nFile %s line%d\n",__FILE__,__LINE__);

	printf("\n******** This test is created by Jack Lio. Email:liaoyuewang@163.com********\n\n");
	
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩女优电影在线观看| 国产一区二区在线电影| 亚洲综合清纯丝袜自拍| 亚洲欧美成人一区二区三区| 亚洲三级在线免费| 一区二区不卡在线视频 午夜欧美不卡在| 中文字幕精品一区| 国产精品二三区| 亚洲美女在线一区| 夜夜嗨av一区二区三区| 亚洲国产精品久久久久婷婷884| 亚洲高清中文字幕| 青青草国产成人av片免费| 日本中文字幕一区二区视频 | 国产一区二区中文字幕| 国产乱子轮精品视频| 国产成人福利片| 99久久综合国产精品| 91国偷自产一区二区三区成为亚洲经典 | 亚洲乱码国产乱码精品精可以看 | 99久久精品99国产精品| 色婷婷久久一区二区三区麻豆| 欧美曰成人黄网| 91麻豆精品91久久久久久清纯 | 美女免费视频一区二区| 国产美女精品在线| av一本久道久久综合久久鬼色| 色婷婷综合久色| 91精品国产高清一区二区三区| 精品精品国产高清a毛片牛牛 | 琪琪一区二区三区| 国产91清纯白嫩初高中在线观看| jlzzjlzz亚洲女人18| 欧美日韩黄色一区二区| 日韩你懂的在线播放| 中文字幕一区二区5566日韩| 亚洲午夜av在线| 国产一区二区三区香蕉| 日本乱码高清不卡字幕| 日韩欧美在线观看一区二区三区| 国产欧美日本一区视频| 亚洲高清免费观看高清完整版在线观看| 日韩不卡在线观看日韩不卡视频| 国产精品一区二区在线看| 色哟哟精品一区| 精品国产在天天线2019| 一区二区三区在线播| 国内精品嫩模私拍在线| 欧美色网站导航| 久久精品人人做人人爽人人| 亚洲午夜羞羞片| 成人精品电影在线观看| 欧美一级高清大全免费观看| 中文字幕亚洲区| 美女性感视频久久| 色婷婷综合久久久久中文| 欧美精品一区二区三区高清aⅴ | 国产精品传媒入口麻豆| 日产国产欧美视频一区精品| 91免费视频大全| 久久网站热最新地址| 日韩中文字幕区一区有砖一区| 99九九99九九九视频精品| 精品不卡在线视频| 日韩二区三区在线观看| 色综合久久九月婷婷色综合| 久久精品人人做人人综合| 蜜桃精品视频在线| 欧美午夜精品一区| 亚洲视频电影在线| 成人小视频免费在线观看| 日韩美女天天操| 午夜视频一区在线观看| 91免费小视频| 国产精品二三区| 成人亚洲精品久久久久软件| 久久色.com| 久久国产三级精品| 91精品在线免费观看| 亚洲中国最大av网站| 91色视频在线| 亚洲欧美偷拍三级| kk眼镜猥琐国模调教系列一区二区| 久久久久亚洲蜜桃| 精品一区免费av| 欧美大白屁股肥臀xxxxxx| 丝袜美腿亚洲综合| 欧美日韩情趣电影| 午夜视频一区二区三区| 欧美日韩国产影片| 亚洲h动漫在线| 3d动漫精品啪啪1区2区免费| 亚洲成在人线免费| 在线免费观看视频一区| 亚洲一线二线三线视频| 欧美吻胸吃奶大尺度电影 | 日本高清不卡aⅴ免费网站| 国产精品毛片久久久久久久| 懂色av噜噜一区二区三区av| 久久久久国产精品厨房| 国产精品一区二区久久精品爱涩| 精品国产一区二区三区不卡| 国产一区中文字幕| 久久久激情视频| 成人一区在线观看| 国产精品成人免费在线| 99精品黄色片免费大全| 亚洲女同ⅹxx女同tv| 欧洲一区在线电影| 午夜精品久久久久久久蜜桃app| 欧美高清视频一二三区 | 色中色一区二区| 亚洲国产中文字幕在线视频综合| 欧美日韩亚洲另类| 免费精品99久久国产综合精品| 日韩一卡二卡三卡四卡| 久88久久88久久久| 国产欧美精品区一区二区三区| 99国产精品一区| 亚洲高清视频在线| 精品久久久久99| 成av人片一区二区| 亚洲综合成人在线| 日韩一区二区精品在线观看| 国产福利91精品| 亚洲欧洲美洲综合色网| 欧美午夜不卡在线观看免费| 久久爱另类一区二区小说| 国产亚洲污的网站| 97se亚洲国产综合自在线观| 亚洲成av人片| 久久久蜜臀国产一区二区| 色综合中文字幕| 日本91福利区| 中文字幕一区二区不卡| 欧美人狂配大交3d怪物一区| 国产在线观看免费一区| 亚洲天天做日日做天天谢日日欢 | 51午夜精品国产| 国产不卡免费视频| 亚洲国产另类av| 国产日韩精品一区二区三区| 欧美图片一区二区三区| 韩国午夜理伦三级不卡影院| 亚洲天堂精品在线观看| 日韩三级在线免费观看| 不卡欧美aaaaa| 免费人成在线不卡| 亚洲欧洲成人av每日更新| 69堂成人精品免费视频| 成人丝袜视频网| 日本欧美一区二区| 国产精品福利一区| 欧美tickling挠脚心丨vk| 色综合天天综合网国产成人综合天| 久久精品国产精品亚洲红杏| 有坂深雪av一区二区精品| 欧美不卡在线视频| 欧美日韩国产色站一区二区三区| 国产精品996| 麻豆国产精品一区二区三区 | 色婷婷精品久久二区二区蜜臂av | 国产综合色视频| 亚洲国产视频一区二区| 日本一区二区久久| 91精品国产欧美日韩| 欧美影视一区在线| 99久久精品情趣| 国产一区二区主播在线| 日本大胆欧美人术艺术动态| 亚洲免费观看在线观看| 久久久99久久| 欧美一区二区三区免费| 欧美性猛片aaaaaaa做受| av在线免费不卡| 国内成人精品2018免费看| 丝袜a∨在线一区二区三区不卡| 亚洲人被黑人高潮完整版| 久久久九九九九| 精品国产人成亚洲区| 日韩三级精品电影久久久| 欧美日韩你懂的| 在线观看视频一区| 97精品电影院| yourporn久久国产精品| 成人综合在线观看| 韩国精品主播一区二区在线观看 | 色婷婷久久99综合精品jk白丝| 成人午夜av电影| 国产精品一级黄| 国产一区二区三区综合| 极品瑜伽女神91| 国产真实乱对白精彩久久| 免费成人美女在线观看.| 日韩综合小视频| 男人的天堂久久精品| 丝袜脚交一区二区| 免费观看在线色综合| 日韩不卡一区二区| 免费看欧美美女黄的网站|