#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DEFAULT_PATH "./config.cfg"
int ProcessAltConfig(char* szConfigKey,char* szConfigValue)
{
/*
*linebuffer:读取文件中的一行存入的缓冲
*buffer1:一行中第一个字段的存入缓冲
*buffer2:一行中第二个字段的存入缓冲
*/
char szLineBuffer[512] = {0};
char szKeyBuffer[512] = {0};
char szValueBuffer[512] = {0};
char szTmpKey[512] = {0};
int nLineLen = 0;
int nLen = 0;
int nResult;
/*
* cc.cfg是文件名,r+代表可以读写文件
*/
FILE *fp = fopen(DEFAULT_PATH, "r+");
if(fp == NULL)
{
printf("open error");
return -1;
}
while(fgets(szLineBuffer, 512, fp))
{
nLineLen = strlen(szLineBuffer);
nLen += nLineLen;
/*
* szKeyBuffer=wireless.1.current_state
* szValueBuffer=1
*/
sscanf(szLineBuffer, "%[^=]=%[^=]", szKeyBuffer,szValueBuffer);
sprintf(szTmpKey,"%s ",szConfigKey);
if(!strcmp(szTmpKey, szKeyBuffer))
{
/*
* 由于已经找到所需要写的位置,所以需要写位置的“头”
*/
nLen -= strlen(szLineBuffer);
/*
* 实现文件位置的偏移,为写文件做准备
*/
nResult = fseek(fp, nLen, SEEK_SET);
if(nResult < 0)
{
perror("fseek");
return -1;
}
memset(szValueBuffer,0,strlen(szValueBuffer));
sprintf(szValueBuffer,"= %s",szConfigValue);
/*strcat(szKeyBuffer, "=");*/
strcat(szKeyBuffer, szValueBuffer);
//printf("%d",strlen(szKeyBuffer));
/*
* 写文件,存入所需的内容
*/
fprintf(fp, "%s", szKeyBuffer);
fclose(fp);
return;
}
}
return 0;
}
int main(int argc, char *argv[])
{
ProcessAltConfig("rx2_fpgz","3");
return EXIT_SUCCESS;
}
网友评论