问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++ 读写INI文件

发布网友 发布时间:2022-04-23 22:50

我来回答

2个回答

热心网友 时间:2023-10-12 17:51

给你做个例子,挺长的,我也不多解释,你自己看看学习吧:
你可以自己创建一个test.ini文件, 写入以下内容做测试:
[Application]
Key=my key

代码如下:
#include <stdio.h>
#include <string.h>
#include <conio.h>

int GetINIData(const char *szApp,const char *szKey,
const char *szDefault,
char *szOut,const int nOut,
const char *szFileName)
{
if (!szApp||!szKey||!szOut||!szFileName) return -1;

if (szDefault)
strncpy(szOut,szDefault,nOut);
else
*szOut=0;

FILE *hFile;
hFile=fopen(szFileName,"r");
if (!hFile) return -1;

const int BUFFER_SIZE=1024;
char szHeadApp[256];

char szBuffer[BUFFER_SIZE]={0};
int nResult=-1;

_snprintf(szHeadApp,sizeof(szHeadApp),"[%s]",szApp);

//search app
while (!feof(hFile))
{
if (fgets(szBuffer,BUFFER_SIZE,hFile))
{
if (szBuffer[strlen(szBuffer)-1]=='\n')
szBuffer[strlen(szBuffer)-1]=0;
if (strcmp(szBuffer,szHeadApp)==0) break;
}
else
goto FUNC_EXIT;
}

//search for key
while (!feof(hFile))
{
if (fgets(szBuffer,BUFFER_SIZE,hFile))
{

char *szEqual=strstr(szBuffer,"=");

if (szEqual)
{
*szEqual=0;

if (strcmp(szBuffer,szKey)==0)
{
szEqual++;

while (*szEqual==' ') szEqual++;
strncpy(szOut,szEqual,nOut);
nResult=0;
}
}
}
else goto FUNC_EXIT;
}

FUNC_EXIT:
fclose(hFile);
return nResult;
}

int main(void)
{
char szOut[256];
GetINIData("Application","Key","default var",szOut,sizeof(szOut),"test.ini");
printf("data: %s\n",szOut);
getch();
return 0;
}

热心网友 时间:2023-10-12 17:51

如果不涉及跨平台的话,仅在Windows平台上有Windows API可以直接调用
读取
GetPrivateProfileString
DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName, //程序名,即[]中的字符串
__in LPCTSTR lpKeyName, //关键字,即等号前的字符串
__in LPCTSTR lpDefault, //如果查询项为空,默认返回的值
__out LPTSTR lpReturnedString, //用于返回值的缓冲区
__in DWORD nSize, //返回缓冲区的大小
__in LPCTSTR lpFileName //文件名
);
写入的话
BOOL WINAPI WritePrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpString,
__in LPCTSTR lpFileName
);
参数可参上
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2023文科男生最吃香的专业 哪些专业好就业 在南京想找上海音乐学院的老师,怎么找? 荔枝核怎么服用-荔枝核煮水一般煮几颗合适 属虎适合什么名字2022年新生儿 有内涵热门名字精选 国内读研好,还是出国读研好 出国读研和国内读研哪个更好 在一个比例中,如果两个外项互为倒数。那么两个内向的什么是一?_百度知 ... 两个外项互为倒数,一个内向是8分之3,另一个内项是多少【怎样求出来... 在一个比例中,两个外向互为倒数,其中一个内项是8,另一个内项是_百度... 在比例中两个外项互为倒数,其中一个内向是2.75,另一个内项是多少_百度... 如何在VC中实现配置文件(ini)的读写 一千几的能买到好手机吗?就不知道买什么机子? vc++ 读取INI文件。 vos3000有手机端吗 C# 读取ini文件的内容,写入新的ini文件 绝园的暴风雨资源的百度云链接 C++ini文件 怎么读取数据 如何在C#中读写INI文件 C#读取ini文件全部信息 Ⅴ_VOs12和Ⅴ_ⅤOs9有哪些曲别 C++中如何读取一个ini文件 vetas v10手机是多少寸,内存多大? c++读取ini文件 VOS9手机界面上下亮度不一样怎么调成一样的 C语言如何新建ini文件,读取ini文件跟写入ini文件 vjvos9鹅鹅鹅鹅鹅4000豪安33瓦多长时间能充满 C语言 INI文件内数据读取方法 Le∩0voS9O一t联想手机多少钱? 右眼皮一直跳是怎么回事 右眼皮跳是怎么回事 vos10手机删除图片有个痕迹怎么关闭 批处理读取ini文件 什么是 VOS 系统 软件 苹果6 p怎么重新设置id? C++操作ini文件问题 安卓手机充满电可以用多少小时一般 ini文件的读取 c++ mfc 读取ini文件里的多组数据 周杰伦一共有多少首歌,分别是什么,到哪里下载 C和C++怎么对ini文件进行操作? V_VOs10手机开机有垃圾广告 批处理怎么读取和修改INI配置文件? v_vos51手机有电子身份证功能吗 关于C# timer和TextReader按时间读取ini文件的问题 _vos1手机怎么截图 安卓上怎么读取ini 男国字脸适合什么样的发型? 读写INI文件怎么指定INI文件的位置在自己程序 男人国字脸适合什么发型好看 国字脸适合什么发型男