Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在ini文件中写入_C_Linux - Fatal编程技术网

C 在ini文件中写入

C 在ini文件中写入,c,linux,C,Linux,我正在使用iniparser为1.Program使用ini文件,该程序创建文件并生成其名称,这很好,。我有一个2.程序,它应该从我试图使用ini文件的第一个程序中“获得一些如何”名称,但它不起作用,下面是ini的一个示例: # # This is an example of ini file # [RECORDING] sampleFrequency = 44100 ; # Sample Frequency folderName = RECORDS ; # Name of the fo

我正在使用
iniparser
为1.Program使用ini文件,该程序创建文件并生成其名称,这很好,。我有一个2.程序,它应该从我试图使用ini文件的第一个程序中“获得一些如何”名称,但它不起作用,下面是ini的一个示例:

#
# This is an example of ini file
#
[RECORDING]

 sampleFrequency = 44100 ; # Sample Frequency 
 folderName =  RECORDS ; # Name of the folder, where the records will be saved 
 lengthInSec = 5 ; #  the duration of the recording in Seconds 

1.节目:

iniparser_set(ini,"RECORDING:fileName","WHATEVER");// this doesn't work nothing happens not even an warning 
你知道我该怎么做吗

更新

在**jxh**之后,我尝试了以下答案:

FILE *finp= NULL;
finp=fopen("initialization.ini","w");
dictionary  *   ini ;
iniparser_dump_ini(ini,finp); /// the program crashes here 
iniparser_set(ini,"RECORDING:fileName","WHATEVER");
iniparser_dump(ini, stdout); 
fclose(finp);
文件还没有从文档中写入

void iniparser_dump_ini (dictionary *d,
                         FILE *f 
                         )
将字典保存到可加载的ini文件

因此,您需要使用
fopen()
打开一个可写文件,并将指针传递到
iniparser\u dump\u ini()
,以写出词典。然后
fclose()
文件

显然,该库的设计主要围绕着将一个“ini”文件读入
字典
。set和unset命令仅影响内存中的数据结构


您的更新试图使用未初始化的变量
ini
,因此您将获得未定义的行为

如前所述,该库显然是围绕读取“ini”文件而设计的。因此,首先需要从一个“ini”文件开始。如果必须从C代码开始执行所有操作,则从一个空文件开始:

const char ininame[] = "initialization.ini";
FILE *finp = fopen(ininame, "w");
fclose(finp);
然后,初始化字典

dictionary *ini = iniparser_load(inifile);
iniparser_set(ini,"RECORDING:fileName","WHATEVER");
那你想怎么查字典就怎么查吧

dictionary *ini = iniparser_load(inifile);
iniparser_set(ini,"RECORDING:fileName","WHATEVER");
然后写出来:

finp = fopen(inifile, "w");
iniparser_dump_ini(ini, finp);
fclose(finp);
从文件中:

void iniparser_dump_ini (dictionary *d,
                         FILE *f 
                         )
将字典保存到可加载的ini文件

因此,您需要使用
fopen()
打开一个可写文件,并将指针传递到
iniparser\u dump\u ini()
,以写出词典。然后
fclose()
文件

显然,该库的设计主要围绕着将一个“ini”文件读入
字典
。set和unset命令仅影响内存中的数据结构


您的更新试图使用未初始化的变量
ini
,因此您将获得未定义的行为

如前所述,该库显然是围绕读取“ini”文件而设计的。因此,首先需要从一个“ini”文件开始。如果必须从C代码开始执行所有操作,则从一个空文件开始:

const char ininame[] = "initialization.ini";
FILE *finp = fopen(ininame, "w");
fclose(finp);
然后,初始化字典

dictionary *ini = iniparser_load(inifile);
iniparser_set(ini,"RECORDING:fileName","WHATEVER");
那你想怎么查字典就怎么查吧

dictionary *ini = iniparser_load(inifile);
iniparser_set(ini,"RECORDING:fileName","WHATEVER");
然后写出来:

finp = fopen(inifile, "w");
iniparser_dump_ini(ini, finp);
fclose(finp);

这两个函数应该保存和读取ini文件。本例使用工作文件夹,但可以提供绝对路径,如“/home/some user/some folder/some program.ini”

#包括
#包括
#包括
//模块变量
国际主题;
国际单项体育联合会;
内部错误;
长时间;
字符标题[80];
字符acLastTopicHeading[80];
char acItemHeading[80];
焦腺嘌呤[160];
半腺体[160];
char-acTempPath[160];
文件*pFIniFile;
文件*pFTempIni;
//萨维尼斯
//保存配置字符串
int saveinis(char*pacPath,char*pacTopic,char*pacItem,char*pacValue){
整数长度;
整数长度;
iError=0;
acLastTopicHeading[0]='\0';
strcpy(腺泡状,pacPath);
strcpy(acTempPath,pacPath);
strcat(acTempPath,“temp”);
//为主题添加括号
strcpy(标题“[”);
strcat(acTopicHeading,pacTopic);
strcat(acTopicHeading,“]\n”);
strcpy(acitem heading,pacItem);
strcat(项目标题“=”);
iItemLength=strlen(项目标题);
iValueLength=strlen(pacValue);
iFoundTopic=0;
iFoundItem=0;
if((pFTempIni=fopen(acTempPath,“w”))==NULL){
printf(“无法打开临时ini文件以写入设置\n”);
iError=1;
返回(iError);
}
//尝试打开当前配置文件进行读取
if((pFIniFile=fopen(acIniPath,“r”)!=NULL){
//从配置文件中读取一行,直到EOF
while(fgets(aciline,159,pFIniFile)!=NULL){
//已找到该项,请继续读取文件以结束
如果(iFoundItem==1){
fputs(阿奇林、普坦比尼);
继续;
}
//尚未找到主题
如果(iFoundTopic==0){
if(strcmp(acTopicHeading,acIniLine)==0){
//找到了主题
iFoundTopic=1;
}
fputs(阿奇林、普坦比尼);
继续;
}
//尚未找到该项目
如果((iFoundItem==0)和&(iFoundTopic==1)){
if(strncmp(acItemHeading,acililine,iItemLength)==0){
//找到物品了吗
iFoundItem=1;
如果(iValueLength>0){
FPUT(acItemHeading、pFTempIni);
fputs(pacValue,pFTempIni);
fputs(“\n”,pFTempIni);
}
继续;
}
//如果换行符或[,则主题已结束
//因此,将项目添加到主题中
如果((acIniLine[0]='\n')| |(acIniLine[0]='[')){
iFoundItem=1;
如果(iValueLength>0){
FPUT(acItemHeading、pFTempIni);
fputs(pacValue,pFTempIni);
fputs(“\n”,pFTempIni);
}
fputs(“\n”,pFTempIni);
如果(腺嘌呤[0]='['){
fputs(阿奇林、普坦比尼);
}
继续;
}
//如果未找到项目,请将行写入临时文件
如果