读写ini配置文件时的相对路径问题

在使用GetPrivateProfileString时需要注意一点,

DWORD WINAPI GetPrivateProfileString(
  _In_   LPCTSTR lpAppName,
  _In_   LPCTSTR lpKeyName,
  _In_   LPCTSTR lpDefault,
  _Out_  LPTSTR lpReturnedString,
  _In_   DWORD nSize,
  _In_   LPCTSTR lpFileName
);


其参数中

lpFileName [in]

The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.

当参数不包含文件全路径时,系统会在Windows中寻找该文件,而并不是我们习惯性认为的在当前工作目录下寻找。

当我们以"./test.ini"作为参数传入时,系统会在当前工作目录下读写test.ini文件,但是我们仅为"test.ini"文件作为参数传入时,系统仅会在X:/Windows目录下查找“test.ini”文件。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VB对ini配置文件进行读写操作实例 '''''''''''''''''''''''''''''''' '**************************************************************************** '描 述:根据鼠标位置获取句柄类名 '编 程:sysdzw 收藏整理 '发布日期:2008/07/20 '博 客:http://hi.baidu.com/sysdzw 'Email :[email protected] 'QQ :171977759 '**************************************************************************** Option Explicit Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Public iniFileName As String '配置文件的名称,一般在窗体load事件中初始化 '获取Ini的值,注意DefString表示如果不存在对应的KeyWord就设置此项为DefString,为空不处理 Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, Optional ByVal DefString As String) As String Dim ResultString As String * 144, Temp% Dim s$, i% Temp% = GetPrivateProfileString(SectionName, KeyWord, "", ResultString, 144, iniFileName) '检索关键词的值 If Temp% > 0 Then '关键词的值不为空 For i = 1 To 144 If Asc(Mid$(ResultString, i, 1)) 0 Then s = s & Mid$(ResultString, i, 1) End If Next Else Temp% = WritePrivateProfileString(SectionName, KeyWord, DefString, iniFileName) '将缺省值写入INI文件 s = DefString End If GetIniS = s End Function '写入字符串值,返回值如果是0表示操作失败 Public Function SetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByVal ValStr As String) As Boolean SetIniS = WritePrivateProfileString(SectionName, KeyWord, ValStr, iniFileName) End Function '清除 Section"段" Public Function DelIniSec(ByVal SectionName As String) As Boolean DelIniSec = WritePrivateProfileString(SectionName, 0&, "", iniFileName) End Function ''清除KeyWord"键" Public Function DelIniKey(ByVal SectionName As String, ByVal KeyWord As String) As Boolean DelIniKey = WritePrivateProfileString(SectionName, KeyWord, 0&, iniFileName) End Function '注意点: 'ini文件在有回车换行符会出错,经过测试,汉字要小于86字节, '英文要小于143字节才能返回列表框。 '使用范例: 'form_load设置文件路径 'Private Sub Form_Load() ' iniFileName = App.Path & "\test.ini" 'End Sub ''写入 'Private Sub Command1_Click() ' MsgBox SetIniS(Text1.Text, Text2.Text, Now) 'End Sub ''获取 'Private Sub Command2_Click() ' MsgBox GetIniS(Text1.Text, Text2.Text, "fff") 'End Sub ''删除 Section 'Private Sub Command3_Click() ' MsgBox DelIniSec(Text1.Text) 'End Sub ''删除 KeyWord 'Private Sub Command4_Click() ' MsgBox DelIniKey(Text1.Text, Text2.Text) 'End Sub '''''''''''''''''''''''''''''''''''''''''''
### 回答1: INIInitial Input)配置文件是一种常用的配置文件格式,用于存储和读取程序的配置信息。以下是读写INI配置文件的步骤: 1. 读取INI配置文件:首先,我们需要打开INI配置文件,并逐行读取文件内容。可以使用适当的函数或库来实现文件读取操作。在读取过程中,我们需要解析每一行内容,并提取所需的配置信息。 2. 解析INI配置文件:在解析每一行配置信息之前,我们还需要进行一些校验和处理。首先,我们需要忽略注释行(行首以分号 “;” 或井号 “#” 开头的行),然后我们需要忽略空行。接下来,我们可以使用适当的函数或算法来解析每一行的配置信息。一般来说,每一行配置信息的格式为“键=值”的形式,我们需要提取出键和对应的值。 3. 存储INI配置文件:如果需要修改INI配置文件或添加新的配置项,我们需要打开INI配置文件,并写入新的配置信息。首先,我们需要读取原有的配置信息,并将其保存到内存中。然后,我们可以使用合适的函数或库来修改配置信息或添加新的配置项。最后,我们将修改后的配置信息写入INI配置文件。 4. 错误处理:在读写INI配置文件的过程中,如果遇到错误,例如文件不存在、文件权限不足、文件格式错误等,我们需要进行适当的错误处理。可以根据实际情况输出错误信息或进行其他操作。 总结:读写INI配置文件是一种常见的配置文件操作方法,需要按照一定的步骤进行。通过逐行读取和解析配置文件内容,可以实现读取INI配置文件的功能。通过修改和添加配置信息,并将其写入配置文件,可以实现存储INI配置文件的功能。在进行读写操作,还需要注意错误处理,以保证程序的稳定性和可靠性。 ### 回答2: INI配置文件是一种常见的配置文件格式,用于存储程序的配置信息。C语言提供了一些函数库用于读写INI文件,包括<Windows.h>头文件中的GetPrivateProfileString、GetPrivateProfileInt、WritePrivateProfileString等函数。 首先,要读取INI配置文件中的值,可以使用GetPrivateProfileString函数。该函数的参数包括INI文件的路径、节名和键名,同可以传入一个缓冲区,函数将根据配置文件中的键值将对应的值复制到缓冲区中。 另外,如果配置文件中的值是整数类型的,可以使用GetPrivateProfileInt函数,该函数会直接返回键值对应的整数值。 如果需要写入INI配置文件,可以使用WritePrivateProfileString函数。该函数的参数包括INI文件的路径、节名、键名和值。调用该函数后,程序会将键值对按照指定的格式写入配置文件中。 在使用这些函数前,需要先加载Windows.h头文件。同,在使用INI配置文件,需要注意配置文件的路径是否正确,以及节名和键名是否正确。读取INI文件,还要判断读取的值是否为空,以避免出现错误。 总结起来,C语言提供了一些函数用于读写INI配置文件,这些函数可以方便地读取和写入配置信息。通过合理的使用这些函数,可以更好地管理程序的配置,提升程序的可配置性和可维护性。 ### 回答3: INIInitialization)是一种常见的配置文件格式,用于存储应用程序的设置和参数。在C语言中,可以通过读写INI配置文件来实现配置文件的加载和保存。 在读取INI配置文件,可以使用标准库函数fopen()来打开文件,然后通过fgets()函数逐行读取文件内容。读取到的每一行都可以通过字符串处理函数来分割成键值对。常用的字符串处理函数包括strtok()、strstr()和sscanf()等。使用需要根据INI配置文件的具体格式和规范来进行相应的处理。 在写入INI配置文件,可以使用标准库函数fopen()来创建或打开文件,然后使用fprintf()函数来向文件写入内容。需要注意的是,写入INI配置文件需要按照一定的格式和规范来进行写入,以保证配置文件的正确性和可读性。 读写INI配置文件的步骤主要包括以下几个方面: 1. 打开INI配置文件:使用fopen()函数打开INI配置文件。 2. 读取INI配置文件内容:使用fgets()函数逐行读取配置文件内容,并使用字符串处理函数处理每一行的内容。 3. 解析INI配置文件内容:根据INI配置文件的格式和规范,将每一行的内容解析成键值对,并存储到相应的数据结构中。 4. 关闭INI配置文件:使用fclose()函数关闭INI配置文件,释放资源。 5. 根据需要进行数据操作:根据存储的键值对,进行相应的数据操作,如设置应用程序的参数、初始化等。 6. 写入INI配置文件:使用fprintf()函数向INI配置文件写入数据,按照INI配置文件的格式和规范进行写入。 总结:通过使用C语言提供的标准库函数,可以实现INI配置文件的读取和写入。读取需要逐行读取并解析每一行的内容,写入需要按照INI配置文件的格式进行写入。读写INI配置文件是一种常见的配置文件处理方式,具有简单、灵活的优点,适用于各种应用程序的配置管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值