在C语言中将文件中的多个整数扫描到整数数组中
试图寻找一个类似于我的问题,但运气不太好 正在为我的data structures类处理经典的“装箱问题”,但我遇到了一件小事:扫描整数 这是故障函数的代码。其目的是创建三个文件:在C语言中将文件中的多个整数扫描到整数数组中,c,arrays,file,scanf,C,Arrays,File,Scanf,试图寻找一个类似于我的问题,但运气不太好 正在为我的data structures类处理经典的“装箱问题”,但我遇到了一件小事:扫描整数 这是故障函数的代码。其目的是创建三个文件: bbsi.txt bbvi.txt和 vbvi.txt 这是由助手函数处理的,我已经测试过了,而且还可以“bbsi.txt”和“bbvi.txt”各有50个整数,而vbvi.txt有100个整数。我通过四个int数组来读取它们 void intializeArrays(int BBSIitems[], int BBV
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;
}
fscanf中的第三个参数需要是指向存储读取值的位置的指针。您的代码应如下所示(注意符号): 对于每个fscanf调用,依此类推
r
模式而不是w
打开文件才能从中读取。fscanf
语句以传递必须读取int的变量的地址。像这样-
fscanf(makeBBSI, "%i", &BBSIitems[i]);
//or
fscanf(makeBBSI, "%i", BBSIitems + i);
实际上我已经试过了,但是没有用。我的数组中仍然会出现奇怪的、类似地址的整数。就像我对Jud提到的,我也试过了。我仍然得到类似的结果。我只是编辑了答案,添加了我发现的另一个bug。看看能不能帮上忙,萨哈!就这样。刚刚测试过,现在效果很好。非常感谢!
fscanf(makeBBSI, "%i", &BBSIitems[i]);
fscanf(makeBBSI, "%i", &BBSIitems[i]);
//or
fscanf(makeBBSI, "%i", BBSIitems + i);