UNIX修改配置文件域中关键字的值

当你需要对采集的文件进行序列号编排的时候,采集的文件名为20130418.dat为了对文件有更好的维护性,想对采集过来的文件进行编号。比如文件20130418_0000001.dat,这个时候以下函数就可以派上用场了。当然也可以使用数据库的序列,不过数据库的交互花销肯定要更高一点。解决办法:只要在配置文件加上以下的值,进行读取更新即可.
   【SEQ】
       CHARGESEQ=0000001

 

/******************************************************************************
 * 函数名:  WrtConfig
 * 函数功能:  写配置文件的相关字段,适用于序列号的增加 * 输  入: 段(节)名,项目名,输入的字串 * 返回值: * 作  者: xxxxxx * 时  间: xxxxxxx * 修改记录: * 注意事项: *******************************************************************************/  int WrtConfig(  char *szSegmentName,				// 段(节)名
				 char *szItemName, 				// 项目名
				 char *szStrBuffer )				// 输入字串
 {
	 FILE *lfp_Config =NULL;
	 char lz_LogMessage[256]={0};
 
	 if(!(lfp_Config = fopen(CONFIGINI, "r+"))) 			 //打开配置文件
	 {
		 printf("\n不能打开文件配置文件");
		 return -1;
	 }
 
	 char lz_LineBuffer[LINE_BUFFER_SIZE];			//行缓冲区
	 char lz_SegmentName[LINE_BUFFER_SIZE];
	 char *lz_Pos = NULL;
	 int li_StepFlag =0;
	 int li_Length = 0;
 
 
	 sprintf(lz_SegmentName,"[%s]",azpSegmentName);
	 while (!feof( lfp_Config ))
	 {
		 lz_LineBuffer[0] = 0;						//清空输出字串
		 fgets(lz_LineBuffer, sizeof(lz_LineBuffer), lfp_Config);
		 Trim(lz_LineBuffer, 0);
		 li_Length = strlen(lz_LineBuffer); 		//保存原始串长度
		 if (lz_LineBuffer[0] == '[' && li_StepFlag == 1) //本段结束
		 {
			 printf("\n没有找到你要修改的字段!\n");
			 fclose(lfp_Config);
			 return -1;
		 }
		 if (strncmp(lz_LineBuffer, lz_SegmentName, strlen(lz_SegmentName)) == 0)
		 {
			 li_StepFlag++;
		 }
 
		 if (li_StepFlag == 1)	//查找项目关键字
		 {
			 if (strncmp(lz_LineBuffer, azpItemName, strlen(azpItemName)) == 0)
			 {
				 lz_Pos = strchr(lz_LineBuffer, '=') + 1;
				 if (lz_Pos == NULL)			 //没有找到相应的值,定位失败!
				 {
					 fclose(lfp_Config);
					 return -1;
				 }
				 size_t i=0;
				 for(i=0;i< strlen(azpStrBuffer);i++)
				 {
					 lz_Pos[i] = azpStrBuffer[i];
				 }
 
				 fseek(lfp_Config,(li_Length+1)*(-1),SEEK_CUR);
				 fputs(lz_LineBuffer,lfp_Config);
				 fflush(lfp_Config);
				 break;
			 }
		 }
	 }
	 fclose(lfp_Config);
	 return 0;
 }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值