33,311
社区成员
发帖
与我相关
我的任务
分享
int writeCFG(const char* filename/*in*/, const char* key/*in*/, const char* value/*in*/) {
int flen = 8192;
FILE* pf = NULL;
char ftemp[8192] = { 0 }, fline[1024] = { 0 }, * fp; //文件缓存数组
long fsize = 0;
int reg = 0;
int exit = 0;
pf = fopen(filename, "r+");
if (pf == NULL) {
pf = fopen(filename, "w+");
}
fseek(pf, 0, SEEK_END)//在此处报错
fsize = ftell(pf);
if (fsize > flen) {
printf("文件不能超过8k\n");
reg = -1;
goto end;
}
fseek(pf, 0, SEEK_SET); //将文件指针指向开头
//一行一行的读,如果存在key则修改value存到缓存数组中
while (!feof(pf)) {
fgets(fline, 1024, pf);
if (strstr(fline, key) != NULL && exit == 1)
{
strcpy(fline, "");
}
if (strstr(fline, key) != NULL && exit == 0) { //判断key是否存在
exit = 1;
sprintf(fline, "\n%s = %s", key, value);
}
strcat(ftemp, fline);
}
if (exit != 1) {//如果不存在则把key value写入到最后一行
sprintf(fline, "\n%s = %s", key, value);
strcat(ftemp, fline);
}
if (pf != NULL) {
fclose(pf);
pf = fopen(filename, "w");
fp = (char*)malloc(sizeof(char) * strlen(ftemp)+1);
strcpy(fp, ftemp);
//fp[strlen(fp) - 1] = '\n';
fputs(fp, pf);
if (fp != NULL) {
free(fp);
fp = NULL;
}
fclose(pf);
}
end:
if (pf != NULL)
fclose(pf);
//重新创建一个以filename命名的文件
return reg;
}
pf = fopen(filename, "r+");
if (pf == NULL) {
pf = fopen(filename, "w+");
}
pf = fopen(filename, "r+");
if (pf == NULL) {
pf = fopen(filename, "w+");
if (!pf)
return -1;
}