配置文件修改

#include 
#include 
#include 

#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;
}

你可能感兴趣的:(配置文件修改)