返回信息流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; /*库存数量*/
};
输出的数组内容却是很长的一堆数?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #20996同步于 2007/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
请问这样读取文件数据到结构体数组行吗?
wujinhua
2007/9/11镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 wujinhua (开杞佩) 的大作中提到: 】
: void readingoods(struct goods *buff)
: {
: int i;
: ...................
显然不行,buff是结构体指针,那么buff[i]又代表什么呢?另外文件里存的什么?以什么形式存的?如果是文本形式的话也不行
【 在 wujinhua 的大作中提到: 】
: void readingoods(struct goods *buff)
: {
: int i;
: ...................
首先,一楼的解释是错误的!!buff 是结构体指针,同样也可以看做数组指针。
程序中使用了宏定义。感觉不是很好。
如果你确保文件中是以二进制存储的数据,那么可以用你的方法读出数据。
如果是文本数据,每行一个记录,这种方法显然不行。
必须自己解析每一行的每一个元素。自己构造那个结构体。
Sorry,确实说错了,不过我的意思并非buff不能作为数组指针,而是作为数组指针时,每一个都是指向一个结构体,因为我看到lz用的循环赋值,还以为他是当成字节型数组在用呢,刚又仔细看了看,赋的值是一个结构体大小,没什么问题
我用的文件是文本的 有什么方法可以把它转化为二进制文件吗?
【 在 redfox 的大作中提到: 】
: 首先,一楼的解释是错误的!!buff 是结构体指针,同样也可以看做数组指针。
: 程序中使用了宏定义。感觉不是很好。
: 如果你确保文件中是以二进制存储的数据,那么可以用你的方法读出数据。
: ...................
【 在 wujinhua (开杞佩) 的大作中提到: 】
: 我用的文件是文本的 有什么方法可以把它转化为二进制文件吗?
按照你的读取方法逆向创建文件,即声明一个结构体,赋值,然后将这个结构体中的内容以二进制形式写入文件