[英]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.