JuanA1的专栏

金字塔最底层之IT民工的技术点滴

用C语言实现MFC库函数GetPrivteProfileString

MFC中此函数GetPrivteProfileString可以用来读取配置文件.ini的函数,它在VS2008msdn中的定义是这样的:

GetPrivateProfileString Function

Retrieves a string from the specified section in an initialization file.

翻译过来就是返回初始化文件中特定区域的字符串。参数如下:

DWORD WINAPI GetPrivateProfileString(

  __in          LPCTSTR lpAppName,

  __in          LPCTSTR lpKeyName,

  __in          LPCTSTR lpDefault,

  __out         LPTSTR lpReturnedString,

  __in          DWORD nSize,

  __in          LPCTSTR lpFileName

);

第一个LPCTSTR类型的lpAppName是定值区间,第二个是要读的字符串的名,第三个默认值为NULL,第四个为返回值,返回读到的字符串,第五个设置第四个参数(字符串)的大小,第六个为初始化文件路径。

这里假设初始化文件如下:

[function]

func1 = init

func2 = paint

func3 = read

func4 = write

func5 = exit

[parameter]

para1 = void

para2 = GDI

para3 = file

para4 = string

para5 = handle

我们要读取func2的值那么读取方法就是

CString strVal;

DWORD size = 1000;

GetPraviteProfileString(_T("function"),_T("func2"),_T("Not Found"),strVal,GetBuffer(size),size,path);

_T("Not Found")为默认字符即没找到时返回的值path为文件路径。

然而当我们在移植程序到嵌入式系统时,这样的MFC函数是要不得的,我所使用的方法就是重写这个函数,用C语言写说到底就是字符串匹配的过程了,涉及到文件的就变成了FILEfstream了,这里选用FILE,看代码吧

下面是两个写入数据结构的函数,我的程序不能随机的读某个节点,只能一次性将节点全部读入数据结构

 

里存储,有更好的方法还望指教!!

从函数中可以看到in_buf是一行一行的读取到数据的所以对应的配置文件格式也要有所变化

[function]

func1

init

func2

paint

func3

read

func4

write

func5

exit

[parameter]

para1

void

para2

GDI

para3

file

para4

string

para5

handle

阅读更多
个人分类: VC编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭