当前位置: 技术问答>linux和unix
关于用c读取文件
来源: 互联网 发布时间:2015-04-17
本文导语: 我想从一个文本文件中读取一段数据,这些数据用一个开始标志和一个结束标志标记起来 比如 StartTag Item1 askdfj asdfjsa《〈〈这里不会出现和标志一个样的字母〉〉 asfj asdfjasf EndTag StartTag1 kajfa kadfjdsa kfjasdl...
我想从一个文本文件中读取一段数据,这些数据用一个开始标志和一个结束标志标记起来
比如
StartTag
Item1 askdfj asdfjsa《〈〈这里不会出现和标志一个样的字母〉〉
asfj asdfjasf
EndTag
StartTag1
kajfa kadfjdsa kfjasdlfjasdlf
sajfladsjf
asdf
asdfasd
EndTag
有点像xml,这个文件非常的大,大概有8M,所以想把所有的东西一下都读到内存中
是不可能的。每个数据块的开始标志是不同的,但是结束标志都是EndTag,可能会
有多个数据块,比如有多个由StartTag1和EndTag括起来的数据
这个有点像读取配置文件的程序,我也顺便问一下,像一些软件的ini程序是
怎么读取得??
比如,则么获得下面的各个字段的值
[Main]
setup=37839
FileExists=000000000
SFP=93CF
Email=anonymous@on.the.net
Log Name=FlashFXP.log
Download Directory=C:Documents and Settingszywang桌面
ConnectTimeout=40
delview=1
Queue=101
[QuickConnect]
Left=0
Top=0
Width=422
Height=224
State=0
[Window]
Left=258
Top=67
Width=700
Height=500
State=0
qTop=0
[Confirm]
Options=1100010
[List]
Passive=1
Type=0
Custom=
[Sounds]
w5=(none)
w1=(none)
[Proxy]
Type=0
Host=
Pass=
SKA=0
[QueueWindow]
Left=0
Top=0
Width=543
Height=272
State=0
[LiveUpdate]
Last=37851
[StatusWin]
Left=371
Top=323
Width=421
Height=305
比如
StartTag
Item1 askdfj asdfjsa《〈〈这里不会出现和标志一个样的字母〉〉
asfj asdfjasf
EndTag
StartTag1
kajfa kadfjdsa kfjasdlfjasdlf
sajfladsjf
asdf
asdfasd
EndTag
有点像xml,这个文件非常的大,大概有8M,所以想把所有的东西一下都读到内存中
是不可能的。每个数据块的开始标志是不同的,但是结束标志都是EndTag,可能会
有多个数据块,比如有多个由StartTag1和EndTag括起来的数据
这个有点像读取配置文件的程序,我也顺便问一下,像一些软件的ini程序是
怎么读取得??
比如,则么获得下面的各个字段的值
[Main]
setup=37839
FileExists=000000000
SFP=93CF
Email=anonymous@on.the.net
Log Name=FlashFXP.log
Download Directory=C:Documents and Settingszywang桌面
ConnectTimeout=40
delview=1
Queue=101
[QuickConnect]
Left=0
Top=0
Width=422
Height=224
State=0
[Window]
Left=258
Top=67
Width=700
Height=500
State=0
qTop=0
[Confirm]
Options=1100010
[List]
Passive=1
Type=0
Custom=
[Sounds]
w5=(none)
w1=(none)
[Proxy]
Type=0
Host=
Pass=
SKA=0
[QueueWindow]
Left=0
Top=0
Width=543
Height=272
State=0
[LiveUpdate]
Last=37851
[StatusWin]
Left=371
Top=323
Width=421
Height=305
|
读出来解析就行了。参考C++的实现:
http://sourceforge.net/projects/inilib/
http://sourceforge.net/projects/inilib/
|
easy
要求再具体点,
用fscanf 和memcmp配合使用可以做到。
要求再具体点,
用fscanf 和memcmp配合使用可以做到。