只要该行数据的最大长度确定,在你这行数据确定后,不足橡唯部分全部用空格覆盖。
比如唤闹ver=1.0.2现在的长度是9个字符,如果我确定这行内容梁链培不会超过12个字符,那后面的内容我可以全用空格覆盖,最后只要加个回车即可。
不知道你所谓的以后改不方便指什么
这个问题和c语言关系不是太大。保存和加载配置的方式有很多,看你的平台处理能力以及配置复杂度了,如果是很复杂的情况,可以使用sqlite数据库;一般也可以用json/xml/ini等通用格式;简单点可以直接用文本文件,或者二进制文件保存自定义格式。前面两种方式可以用相关的库处理,后面这种就自己写了,方便调试的话,最好是用文本方手缺式保存,这样比较容易检查。最直接毕宴辩的方式就是用类似KEY=VALUE这样的配对,比如:username=abc。每一个配置之间的分隔符可以直接用回车,这样方便查看最终保存的结果。 *** 作的话祥辩,基本上就是定义一个配置的数据结构,然后填入所有配置数据,再挨个写进文件。读取的时候,就按KEY来解析VALUE,然后填入相应的位置。
#include <stdio.h>#include <string.h>
#define MAX_BUF 20
#define SERVER "localhost"
#define CONFIG_FILE "1.conf"
bool SetAuthServer(char* strServerAdd)
{
char buf[MAX_BUF], tempBuf[MAX_BUF]
memset(buf, 0, MAX_BUF)
memset(tempBuf, 0, MAX_BUF)
FILE *pF = fopen(CONFIG_FILE, "r")
if(!pF)
{
printf("打开文件失败!\芦汪n")
return false
}
fread(buf, MAX_BUF, 1, pF)
if(!feof(pF))
{
printf("读取不完整,请把MAX_BUF设置为大一点, 当前大小为: %d\n", MAX_BUF)
fclose(pF)
return false
}
fclose(pF)
char *lpPos = buf
char *lpNewPos = buf
while(lpNewPos = strstr(lpPos, SERVER))
{
strncpy(tempBuf+strlen(tempBuf), lpPos, lpNewPos-lpPos)
strcat(tempBuf, strServerAdd)
lpPos = lpNewPos + strlen(SERVER)
}
strcat(tempBuf, lpPos)
pF = fopen(CONFIG_FILE, "w")
if(!pF)
{
printf("打开文件拆誉失败!\n")
return false
}
fwrite(tempBuf, strlen(tempBuf), 1, pF)
fclose(pF)
return true
}
void main()
{
char buf[20]
printf("请输入一个字符串来修改服务旅哗段器配置: ")
scanf("%s", buf)
if(SetAuthServer(buf) == true)
printf("修改成功!\n")
else
printf("修改失败!\n")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)