2014年3月4日 星期二

[字串處理] 文件特定字串修改

修改channel=這個欄位 , 可以設定為 channel=1000或channel=1

因為整體的文件大小會改變 , 所以我採用tmp file方式 , 不用記憶體的方式



#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char DataBuffer[512] , buffer1[512]; 
    FILE *fp ,*fp1;
    char *search_key="channel";
    char *file = "test.conf";
    char *file_tmp = "test.conf.tmp";

    if(argc < 2){
        printf("[error] commad fail\n");
        return -1;
    }
   
    fp = fopen(file, "r+");

    if(fp == NULL) 
    { 
        printf("open error"); 
        return -1; 
    }
   
    fp1 = fopen(file_tmp ,"wb");
   
    if(fp1 == NULL) 
    { 
        printf("open error"); 
        return -1; 
    }

    while(fgets(DataBuffer, 512, fp))
    {
        sscanf(DataBuffer, "%[^=]=",buffer1);
       
        if(!strcmp(search_key , buffer1)) 
        {
            sprintf(DataBuffer , "%s=%d\n",search_key, atoi(argv[1]));       
        }
       
        fwrite(DataBuffer , 1 , strlen(DataBuffer) , fp1);
    }
   
    fclose(fp);
    fclose(fp1);
    system("cp -f test.conf.tmp test.conf");
   
    return 0;
}



source code 下載
https://drive.google.com/file/d/0B8hm-I2M8BD7cEN4VnhNMDhWaGM/edit?usp=sharing

沒有留言:

張貼留言