送分求帮忙!配置文本文件.txt,用结构体怎么解析出来?

时间:2022-08-30 19:09:18
以下文本文件a.txt,以一种平面数据的形式描述了树状配置信息。具体数据描述如下。数据以空格分开,第一段描述了数据的类型;第二段代表ID号;第三段为描述信息;对于属性还有一到两个信息,第四段为数据类型:C-字符串,N-数字,E-代表枚举型,枚举型以“/"分隔开。求怎么以结构体、联合体的形式表示出来,然后用文件读取处理呢?谢谢了!

根 测试部门
分支 10 产品开发部
叶子 101 人员信息
属性 10101 姓名 C
属性 10102 年龄 N
属性 10103 性别 E 男/女
叶子 102 产品信息
属性 10201 产品 C
分支 11 信息中心
叶子 111 班组
属性 11101 名称 C
属性 11102 人数 N

14 个解决方案

#1


用xml呢

#2


我没接触过xml,所以不大懂
这个题目的意思是先用一个大的结构体列出类型,然后文件读取处理,然后用一个树型界面显示出来。
但是我现在是用结构体表示都有点问题:)

#3


写一个分析字符串的函数 
读取一行分析一行

你这个存储也太了乱了吧,不是推荐的  用xml吧,很简单的 没你想象那么难 ,MFC查一下tinyxml 

#4


谢谢楼上的,我学过C++,但没接触这个,是一个公司出的面试题,要求是这样,所以还不明白是怎么回事:)

#5


ai 4!


都怪自己当年没好好学习啊!新手!不懂!哦是文盲!

#6


最好还是XML吧?
像这种使用ACCESS数据库也是不错的了~

#7


XML首选,顺便Up

#8


xml首选,楼主可以研究下xml啊。这个很实用,我也是近期才研究这个,也是要用到了。

#9


谢谢热心推荐啊,xml好是好啊,但是只有一天时间了,哪还研究的了哦,只有靠最基本的方法了:)

#10


我不知道你要写的这个信息到底有多少,是有至少上千个这样的信息还是怎么的,如果信息很少,你的程序对效率要求也不高的话,我觉得直接用最简单的结构体就可以解决问题了。
struct Info{
char szType[5]; //第一段描述了数据的类型 : "分支" 或 "叶子" 或 "属性"
int nID; //第二段代表ID号 : ID
char szDescribe[100];//第三段为描述信息
char DataType; //第四段为数据类型:C-字符串,N-数字,E-代表枚举型
char szContent[255]; //
};

当你要写文件的时候如下:
	Info ifo;
memset( &ifo, 0, sizeof( Info ) );
strcpy( ifo.szType, "分支" );
ifo.nID = 10;
strcpy( ifo.szDescribe, "产品开发部" );

填写好结构体的信息直接写进文件,要读文件的时候直接按照固定多少个字节的信息读出来就可以了,从你的要求可以看出最多有五个字段就够了,读的时候有些信息只有前两个字段有效,你就相应读取前两个字段的就可以了,
我觉得如果存储信息很简单,就不超过10条或者很少,随便做一下就可以了,如果你的信息很多,这个方法肯定不行,必须想其它规范、成熟的方法。

#11


引用 10 楼 zhllxt 的回复:
我不知道你要写的这个信息到底有多少,是有至少上千个这样的信息还是怎么的,如果信息很少,你的程序对效率要求也不高的话,我觉得直接用最简单的结构体就可以解决问题了。 

C/C++ codestruct Info{
    char    szType[5];        //第一段描述了数据的类型 : "分支" 或 "叶子" 或 "属性"
    int        nID;            //第二段代表ID号 : ID
    char    szDescribe[100];//第三段为描述信息
    char    DataType; …

#12


引用 4 楼 zdd0605 的回复:
谢谢楼上的,我学过C++,但没接触这个,是一个公司出的面试题,要求是这样,所以还不明白是怎么回事:)


很明显考你的基本功啦
这样的属性怎样用结构体和联合体表达,这是考你的设计

#13


请问如果我分析一行处理一行,当readstring strline读到“属性 10102 年龄 N”这一行的时候,“年龄要存到列表框”,但是文件中“年龄”长度和内容是可以变动的,也就是列表框的内容随文件内容变动而改变。那我怎么把“年龄”这个字符串给抽出来存储呢?

#14


如果每个字段不是定长的,还是用状态机分析一下吧

#1


用xml呢

#2


我没接触过xml,所以不大懂
这个题目的意思是先用一个大的结构体列出类型,然后文件读取处理,然后用一个树型界面显示出来。
但是我现在是用结构体表示都有点问题:)

#3


写一个分析字符串的函数 
读取一行分析一行

你这个存储也太了乱了吧,不是推荐的  用xml吧,很简单的 没你想象那么难 ,MFC查一下tinyxml 

#4


谢谢楼上的,我学过C++,但没接触这个,是一个公司出的面试题,要求是这样,所以还不明白是怎么回事:)

#5


ai 4!


都怪自己当年没好好学习啊!新手!不懂!哦是文盲!

#6


最好还是XML吧?
像这种使用ACCESS数据库也是不错的了~

#7


XML首选,顺便Up

#8


xml首选,楼主可以研究下xml啊。这个很实用,我也是近期才研究这个,也是要用到了。

#9


谢谢热心推荐啊,xml好是好啊,但是只有一天时间了,哪还研究的了哦,只有靠最基本的方法了:)

#10


我不知道你要写的这个信息到底有多少,是有至少上千个这样的信息还是怎么的,如果信息很少,你的程序对效率要求也不高的话,我觉得直接用最简单的结构体就可以解决问题了。
struct Info{
char szType[5]; //第一段描述了数据的类型 : "分支" 或 "叶子" 或 "属性"
int nID; //第二段代表ID号 : ID
char szDescribe[100];//第三段为描述信息
char DataType; //第四段为数据类型:C-字符串,N-数字,E-代表枚举型
char szContent[255]; //
};

当你要写文件的时候如下:
	Info ifo;
memset( &ifo, 0, sizeof( Info ) );
strcpy( ifo.szType, "分支" );
ifo.nID = 10;
strcpy( ifo.szDescribe, "产品开发部" );

填写好结构体的信息直接写进文件,要读文件的时候直接按照固定多少个字节的信息读出来就可以了,从你的要求可以看出最多有五个字段就够了,读的时候有些信息只有前两个字段有效,你就相应读取前两个字段的就可以了,
我觉得如果存储信息很简单,就不超过10条或者很少,随便做一下就可以了,如果你的信息很多,这个方法肯定不行,必须想其它规范、成熟的方法。

#11


引用 10 楼 zhllxt 的回复:
我不知道你要写的这个信息到底有多少,是有至少上千个这样的信息还是怎么的,如果信息很少,你的程序对效率要求也不高的话,我觉得直接用最简单的结构体就可以解决问题了。 

C/C++ codestruct Info{
    char    szType[5];        //第一段描述了数据的类型 : "分支" 或 "叶子" 或 "属性"
    int        nID;            //第二段代表ID号 : ID
    char    szDescribe[100];//第三段为描述信息
    char    DataType; …

#12


引用 4 楼 zdd0605 的回复:
谢谢楼上的,我学过C++,但没接触这个,是一个公司出的面试题,要求是这样,所以还不明白是怎么回事:)


很明显考你的基本功啦
这样的属性怎样用结构体和联合体表达,这是考你的设计

#13


请问如果我分析一行处理一行,当readstring strline读到“属性 10102 年龄 N”这一行的时候,“年龄要存到列表框”,但是文件中“年龄”长度和内容是可以变动的,也就是列表框的内容随文件内容变动而改变。那我怎么把“年龄”这个字符串给抽出来存储呢?

#14


如果每个字段不是定长的,还是用状态机分析一下吧