[英]file scan using fscanf with array struct in c
所以我想知道如何将 fscanf 与数组结构一起使用。 所以这是我的结构
struct menuinput{
char nama[50];
int nomor;
int berat;
int jumlah;
int pilihan;
float kalori;
float totalkkal;
}mknpokok[20],mknsayur[20],mknspsj[20],mknlaukpauk[20],mknbuah[20];
我想在使用 fscanf 的文件扫描中使用它,据我所知文件扫描命令是这样的
while(!feof(fp))
{
fscanf(fp,"\n%d %[^\n] %d %.3f",&mknpokok.nomor[i],mknpokok.nama[i],&mknpokok.berat[i],&mknpokok.kalori[i])
i++;
}
当我运行时,我收到此错误消息
error: '(struct menuinput *)&mknpokok' is a pointer; did you mean to use '->'?
我忘记了如何使用数组结构进行 fscanf,所以我做的是正确的吗? 如有错误,请用正确的代码更正,谢谢。
您正在以错误的方式访问struct
mknpokok
的元素。
你应该像&mknpokok[i].nomor
而不是&mknpokok.nomor[i]
mknpokok.nomor[i] 那样访问它们,因为你已经声明了mknpokok
的数组,而不是nomor
。
mknpokok
是一个包含20
menuinput
的数组,因此在其上使用下标运算符mknpokok[i]
。while(!feof(stream))
然后尝试从 stream 读取而不检查读取是否成功。 请参阅为什么“while(?feof(file) )”总是错误的?%.3f
不是标准转换。 您可能应该使用%f
。例子:
// only populate elements 0-19
// v
while (i < 20 && fscanf(fp, " %d %[^\n] %d %f", &mknpokok[i].nomor,
mknpokok[i].nama, &mknpokok[i].berat,
&mknpokok[i].kalori) == 4) {
// ^^^^
// check that fscanf succeeded
++i;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.