尝试寻找类似于我的问题,但没有太多运气。
为我的数据结构类处理经典的“bin-packing问题”,但是我正忙着处理一个小问题:扫描整数。
这是麻烦功能的代码。其目的是创建三个文件:
bbsi.txt
bbvi.txt
,并
vbvi.txt
这是由我已经测试过的辅助函数处理的。 'bbsi.txt'和'bbvi.txt'各有50个整数,而vbvi.txt有100个整数。我传递了四个int
数组来读取它们。
void intializeArrays(int BBSIitems[], int BBVIitems[], int VBVIbins[], int VBVIitems[])
{
char *bbsiMaker = "bbsi.txt";
char *bbviMaker = "bbvi.txt";
char *vbviMaker = "vbvi.txt";
FILE *makeBBSI = fopen(bbsiMaker, "w");
FILE *makeBBVI = fopen(bbviMaker, "w");
FILE *makeVBVI = fopen(vbviMaker, "w");
srand(time(NULL));
createBBSI(makeBBSI);
createBBVI(makeBBVI);
createVBVI(makeVBVI);
int i;
//puts all item sizes in the various arrays for use by the bin-packing heuristics
for(i = 0; i < 50; i++)
{
fscanf(makeBBSI, "%i", BBSIitems[i]);
}
for(i = 0; i < 50; i++)
{
fscanf(makeBBVI, "%i", BBVIitems[i]);
}
for(i = 0; i < 50; i++)
{
fscanf(makeVBVI, "%i", VBVIitems[i]);
}
//puts all bin sizes into the VBVIbins array for use by the VBVI heuristic
for(i = 0; i < 50; i++)
{
fscanf(makeVBVI, "%i", VBVIbins[i]);
printf("%i\n", VBVIbins[i]);
}
//always gotta close those file streams..
fclose(makeBBSI);
fclose(makeBBVI);
fclose(makeVBVI);
return;
}
例如,这里是vbvi.txt
。
(注意:它们在文本文件中逐行分开..不知道如何在这里发生这种情况)
vbvi.txt
41
43
89
91
64
95
70
43
42
76
74
85
63
78
62
58
91
42
92
43
71
49
61
53
79
48
57
83
72
49
80
74
54
68
66
78
65
99
84
69
74
57
55
97
96
78
57
88
80
48
53
21
105
22
79
95
86
62
21
34
38
36
28
35
71
46
72
71
43
71
85
106
71
64
25
64
33
29
102
70
72
45
34
29
101
94
104
40
45
105
54
26
30
25
41
45
105
57
96
92
为确保程序正常运行,我让程序打印出数组的每个值。这就是出现问题的地方。
VBVIitems
和VBVIbins
的输出:
2090266759
0
1486921290
48
0
0
1556741664
32574
1
0
0
0
1
48
1489111448
48
-1021968384
6336833
0
0
0
0
1486944385
48
0
0
1489114336
48
1194362048
32767
0
0
1194362072
32767
0
1
0
0
1486882620
48
0
0
0
0
0
0
0
0
1
0
1489111448
48
1486918310
48
19
0
1194362192
32767
1194362240
32767
1194362192
32767
1
0
1489114944
48
1910330751
0
1486918310
48
1489108688
48
1194362256
32767
63
48
1194362256
32767
3
0
1556740944
32574
-163754450
0
1486920631
48
1
32767
64550200
0
46
0
1491090000
48
0
0
1194362640
32767
1491090504
48
看起来很像地址或其他东西,但是啊。哇。
编辑:添加我的数组声明和函数调用,以防万一有值得注意的事情。
int BBSIitems[50], BBVIitems[50], VBVIbins[50], VBVIitems[50];
intializeArrays(BBSIitems, BBVIitems, VBVIbins, VBVIitems);
答案 0 :(得分:0)
fscanf中的第三个参数需要是指向存储读取值的位置的指针。您的代码应如下(注意&符号):
fscanf(makeBBSI, "%i", &BBSIitems[i]);
等每个fscanf电话。
答案 1 :(得分:0)
r
模式而不是w
打开文件才能从中读取。您必须更改fscanf
语句以传递必须读取int的变量的地址。
像这样 -
fscanf(makeBBSI, "%i", &BBSIitems[i]);
//or
fscanf(makeBBSI, "%i", BBSIitems + i);