目前我的代码如下:
type MyOptions struct {
Field1 int // zero value (default) of int is 0
Field2 string // zero value (default) of string is ""
}
func DoAction(arg1, arg2 string, options *MyOptions){
var defaultValue1 int = 30 // some reasonable default
var defaultValue2 string = "west" // some reasonable default
if options != nil {
defaultValue1 = options.Field1 // override with our values
defaultValue2 = options.Field2
}
doStuffWithValues
打印出来:
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个不同的项目?
答案 0 :(得分:0)
在代码中包含return 1语句会立即从for循环返回。删除它,它应该工作。
#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]);
}
fclose(inventory);
return 0;
}
答案 1 :(得分:0)
#include<stdio.h>
#define MAX_SIZE 12
int readInventory(char filename[], int item[], float price[]);
int main(void)
{
int item[MAX_SIZE], i, err = 0;
float price[MAX_SIZE];
char filename[MAX_SIZE] = "data";
if ((err = readInventory(filename, item, price)) != 0) {
return err;
}
for (i = 0; i < MAX_SIZE; i++)
printf("%d: %d %.2f\n",i+1, item[i], price[i]);
return 0;
}
int readInventory(char filename[], int item[], float price[])
{
FILE *inventory = NULL;
int i;
if ((inventory = fopen(filename, "r")) == NULL) {
fprintf(stderr, "Failed to open %s\n", filename);
return (1);
}
for (i = 0; i < MAX_SIZE; i++)
fscanf(inventory, "%d%f", &item[i], &price[i]);
fclose(inventory);
return 0;
}
你可以试试这个。看到传递数组的不同,对函数调用进行错误检查。代码缩进。
答案 2 :(得分:0)
在代码中执行以下更改,它会起作用, 在for循环中删除readInventory(),调用该函数可以完成这项工作。
对于打印,在fscanf之后将printf()放入readInventory()for循环中,并从那里删除return 1语句。