我想在 C 中阅读文本文件,我想对此文件执行搜索。这是文本文件的内容:
( EDIT :原始格式看起来有点不同,因为文件中没有换行符。已重新格式化以删除文本字符串之间的空格,并通过多列程序过滤80col屏幕。)
^%1~3~31225~2999 ^%1~8~33983~5304
~MAC100 ~MAC100
~RAJU ~LATHA CHERIAN
CR ~ELIM VILLA
~CHEMPOLA ~1
~VT : 2999 ~9847569922
~9847569922 ~32166
~29408 ~Message for bill gro~1960.0
~Message for bill gro~750.0 ~160.0
~250.0 ~0.0
~0.0 ~1~scheme name
~1~scheme name ~0
~0 ~June
~June ~VA019_95784~-
~VA019_93159~- ~0.0
~0.0 ~0~amc date 1~amc date 2~990
~1~amc date 1~amc date 2~990 ~15.0
~15.0 ~150.0
~150.0 ~narration
~narration ^%1~9~31588~3235
^%1~5~30882~2496 ~MAC100
~MAC100 ~BABU
~VISWAMPARAN T. P. ~NADUMPARMBIL
~THALAKOTTUCHALIL ~0
~C 4771 ~9847569922
~9847569922 ~29771
~29065 ~Message for bill gro~3304.0
~Message for bill gro~4320.0 ~160.0
~160.0 ~0.0
~0.0 ~1~scheme name
~1~scheme name ~0
~0 ~June
~June ~VA019_93516~-
~VA019_92833~- ~0.0
~0.0 ~0~amc date 1~amc date 2~990
~0~amc date 1~amc date 2~990 ~15.0
~15.0 ~150.0
~150.0 ~narration
~narration ^?
这是计费系统格式的数据库。我想根据名称和id(这是^%1~9~**31588**~3235
,here 31588
)来执行此文件的通用搜索功能。这是记录文件。每条记录都以^%1.~
开头,~
用于分隔每条记录的列值。不需要第一个和最后一个字符(每个记录^%1
和文件最后^?
。请帮我这样做。
答案 0 :(得分:1)
您首先应该定义(或理解)精确您的输入格式(可能的&禁止字符是什么),也许使用某些EBNF表示法。
然后您可以逐行处理输入(使用fgets
或getline
)并分别解析每一行(使用sscanf
或strtol
并进行额外的手动解析)< / p>
答案 1 :(得分:0)
使用fgets()逐行读取,然后在#34;〜&#34;的基础上使用strtok进行标记。希望有效