【发布时间】:2016-04-13 06:28:08
【问题描述】:
目前我的代码如下所示:
#include<stdio.h>
#define MAX_SIZE 12
int readInventory(char filename[], int item[], float price[]);
int main(void)
{
int item[MAX_SIZE], i;
float price[MAX_SIZE];
char filename[MAX_SIZE];
for ( i = 0; i < MAX_SIZE; i++ )
{
readInventory(filename, &item[i], &price[i]);
printf("\n%d %.2f\n", item[i], price[i]);
}
return 0;
}
int readInventory(char filename[], int item[], float price[])
{
FILE *inventory;
int i;
inventory = fopen("inventory.dat", "r");
for ( i = 0; i < MAX_SIZE; i++ )
{
fscanf(inventory,"%d%f", &item[i], &price[i]);
return 1;
}
fclose(inventory);
return 0;
}
打印出来的:
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
1200 20.00
这只是文件中的前两项
如何让我的程序显示所有 12 个不同的项目?
【问题讨论】:
-
从函数
for循环中删除return 1。 -
看看你阅读的那个循环,记住
return从函数立即返回。 -
并决定你想要循环的位置 - 在 readInventory 函数中或外部,但不是在两个地方。
-
你需要检查fopen和fscanf返回的结果。
标签: c arrays file-management read-write