C语言读取磁盘文件的问题

现在遇到一个问题需要请教。 比如:我在电脑上有一个文件叫Data.dat里面的内容是(按顺序表示 条码 商品名 单价 数量)123456789 绿茶饮料 12 87548796 雪饼 3.2 45879854123658 饼干 5.6 77……我现在需要把这个文档中的数据读到一个结构数组中,比如:typedef struct{ char Name[];//商品名称 char Barcode[];//商品编码 float Price;//商品单价 int Quantity;//商品数量 float Total;//商品总价}PRO; PRO Product[MAX];需要把123456789存入Product[0].Barcode 把绿茶饮料存入Product[1].Name 把12存入Product[1].Price 把87存入Product[1].Quantity 然后是下一条目 把548796存入Product[1].Barcode 把雪饼存入Product[1].Name 把3.2存入Product[1].Price …… …… 请问要怎么实现呢?我现在遇到的难点是,每个条码长度,商品名称的长度都不一样,不知道要怎么判断每个项目结束,并准确的储存到各个数组中。

首先这跟C语言没有关系,任何程序都是这么处理的。 如果你的信息是一天一行的话还简单,如果不是,那你的保证,data里数据的正确性,这样才能判断。 123456789 绿茶饮料 12 87548796 雪饼 3.2 45879854123658 饼干 5.6 77 如果这样,你只要一行一行的解析就可以了,一行里面的解析用空格来分割一个属性的结束。 如果他们是一行的,那你只能通过空格分割,来读取每一个属性,读取了3个属性,那么就进入了另外一个商品的属性了。 如果商品名称中会带有空格,那么你还可以顺便判断下,读出来属性是一般的字符,还是属于纯数字,如果不是纯数字那么该属性还是属于商品名称,可以合并。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-10
这就是单纯的C语言的不足啊,长度不同的信息串,在文件中读取是不方便的。 其实你可以考虑设置一个固定的长度,不足位的话就补充空格,这样处理起来会方便一些。 Be Lucky!