gpt4 book ai didi

c - 在 C 中将文件中的多个整数扫描到整数数组中

转载 作者:行者123 更新时间:2023-11-30 17:44:34 24 4
gpt4 key购买 nike

尝试寻找与我类似的问题,但运气不佳。

正在为我的数据结构类解决经典的“装箱问题”,但我被一件小事困扰:扫描整数。

这是麻烦函数的代码。其目的是创建三个文件: bbsi.txt bbvi.txtvbvi.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

为了确保程序正常工作,我让程序打印出数组的每个值。这就是问题出现的地方。

VBVIitemsVBVIbins 的输出:20902667590148692129048001556741664325741000148148911144848-1021968384633683300001486944385480014891143364811943620483276700119436207232767010014868826204800000000101489111448481486918310481901194362192327671194362240327671194362192327671014891149444819103307510148691831048148910868848119436225632767634811943622563276730155674094432574-163754450014869206314813276764550200046014910900004800119436264032767149109050448

看起来很像地址之类的东西,但是是的..Woof。

编辑:添加我的数组声明和函数调用,以防万一有什么值得注意的地方。

int BBSIitems[50], BBVIitems[50], VBVIbins[50], VBVIitems[50];

intializeArrays(BBSIitems, BBVIitems, VBVIbins, VBVIitems);

最佳答案

  1. 您必须以 r 模式(而不是 w)打开文件才能读取文件。
  2. 您必须更改 fscanf 语句以传递必须读取 int 的变量的地址。
    像这样-

    fscanf(makeBBSI, "%i", &BBSIitems[i]);
    //or
    fscanf(makeBBSI, "%i", BBSIitems + i);

关于c - 在 C 中将文件中的多个整数扫描到整数数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19945389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com