我已經編寫了使用fscanf("%s &d &d &d")
從文件讀取的函數。出於某種原因,當我顯示輸出時,所有整數值都是正確的,但字符串都是相同的。 food_stuff
是一個struct
保存在一個數組中。從文件讀取時重複字符串但不是整數
*編輯 我試過使用for
將每個元素從一個數組添加到另一個數組,我試過strcpy
。
下面是該功能。
int readFromFile()
{
char*name;
int type;
int cals;
int price;
FILE * food_file;
food_file = fopen ("food_file.txt", "r");
while(fscanf(food_file, "%s %d %d %d", name, &type, &cals, &price)!=EOF)
{
food_stuff fs;
fs.name = name;
fs.type = type;
fs.calories = cals;
fs.price = price;
fflush(stdin);
addItem(fs);
}
}
有兩件事:(i)您需要爲'name'字段分配內存,(ii)從不在'stdin'上調用'fflush'。 –
@PaulR我用'name =(char *)malloc(20 + 1);'分配了內存並擺脫了'fflush(stdin);'但沒有任何改變。沖洗標準輸入是否確實做了什麼? – Aezur
問題可能出現在你的'additem'函數中。可以肯定的是,在調用'additem'之前打印這些值。 – Dipto