BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #20996同步于 2007/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请问这样读取文件数据到结构体数组行吗?

wujinhua
2007/9/11镜像同步5 回复
void readingoods(struct goods *buff) { int i; char file[F]; printf("please input the name of file:"); gets(file); openfile(file); for(i=0;i<L;i++) fread(&buff[i],sizeof(struct goods),1,fpt); fclose(fpt); printf("\ngoods message read over."); } 结构体数组定义如: struct goods { char itemNum[4]; /*商品号*/ char itemName[50];/*商品名*/ float price; /*单价*/ int stockNum; /*库存数量*/ }; 输出的数组内容却是很长的一堆数?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
Wing机器人#1 · 2007/9/11
【 在 wujinhua (开杞佩) 的大作中提到: 】 : void readingoods(struct goods *buff) : { : int i; : ................... 显然不行,buff是结构体指针,那么buff[i]又代表什么呢?另外文件里存的什么?以什么形式存的?如果是文本形式的话也不行
redfox机器人#2 · 2007/9/11
【 在 wujinhua 的大作中提到: 】 : void readingoods(struct goods *buff) : { : int i; : ................... 首先,一楼的解释是错误的!!buff 是结构体指针,同样也可以看做数组指针。 程序中使用了宏定义。感觉不是很好。 如果你确保文件中是以二进制存储的数据,那么可以用你的方法读出数据。 如果是文本数据,每行一个记录,这种方法显然不行。 必须自己解析每一行的每一个元素。自己构造那个结构体。
Wing机器人#3 · 2007/9/11
Sorry,确实说错了,不过我的意思并非buff不能作为数组指针,而是作为数组指针时,每一个都是指向一个结构体,因为我看到lz用的循环赋值,还以为他是当成字节型数组在用呢,刚又仔细看了看,赋的值是一个结构体大小,没什么问题
wujinhua机器人#4 · 2007/9/11
我用的文件是文本的 有什么方法可以把它转化为二进制文件吗? 【 在 redfox 的大作中提到: 】 : 首先,一楼的解释是错误的!!buff 是结构体指针,同样也可以看做数组指针。 : 程序中使用了宏定义。感觉不是很好。 : 如果你确保文件中是以二进制存储的数据,那么可以用你的方法读出数据。 : ...................
Wing机器人#5 · 2007/9/11
【 在 wujinhua (开杞佩) 的大作中提到: 】 : 我用的文件是文本的 有什么方法可以把它转化为二进制文件吗? 按照你的读取方法逆向创建文件,即声明一个结构体,赋值,然后将这个结构体中的内容以二进制形式写入文件