#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#define HOSTAPDCONFIG_FILE ("./config.txt")
#define flen 1024*8
int write_hostapdconfig(const char*key,const char*value)
{
FILE *pf =NULL;
char ftemp[flen]={0};
char fline[1024]={0};
char *fp;
long fsize=0;
int reg=0;
int exit=0;
int i=0;
#if 1
pf = fopen(HOSTAPDCONFIG_FILE, "r+");
if(pf == NULL){
pf = fopen(HOSTAPDCONFIG_FILE, "w+");
}
//get file size
fseek(pf, 0, SEEK_END); // 将文件指针指向末尾
fsize = ftell(pf);
printf("fsize=%d\n",fsize);
if(fsize > flen){
printf("文件不能超过8k\n");
fclose(pf);
reg = -1;
}
fseek(pf, 0, SEEK_SET); //将文件指针指向开头
//一行一行的读,如果存在key则修改value存到缓存数组中
while(1)
{
if(fgets(fline, 1024, pf)==NULL)
break;
if(strstr(fline, key) != NULL && exit == 1)
strcpy(fline, "");
if(strstr(fline, key) != NULL && exit == 0){ //判断key是否存在
exit = 1;
sprintf(fline,"%s=%s\n", key, value);
}
//printf("fline = %s\n", fline);
strcat(ftemp, fline);
}
if(exit != 1)
{//如果不存在则把key value写入到最后一行
sprintf(fline,"%s=%s\n", key, value);
strcat(ftemp, fline);
}
printf("%s",ftemp);
if(pf != NULL)
{
fclose(pf);
pf = fopen(HOSTAPDCONFIG_FILE, "w+");
fp = (char *)malloc(sizeof(char) * strlen(ftemp) + 1);
strcpy(fp, ftemp);
fputs(fp, pf);
if(fp != NULL)
{
free(fp);
fp = NULL;
}
fclose(pf);
}
return reg;
#endif
}
int main(){
char keyword[128]={0};
char value[128]={0};
strcpy(keyword,"hw_mode");
strcpy(value,"g");
printf("请输入key:");
scanf("%s", keyword);
printf("请输入value:");
scanf("%s", value);
printf("\n您输入的是:%s = %s\n", keyword, value);
write_hostapdconfig(keyword,value);
return 0;
}
如果配置文件中没有对应的配置,会在文件的最后一行添加;如果有相应的配置会修改配置。