Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中将文件中的多个整数扫描到整数数组中_C_Arrays_File_Scanf - Fatal编程技术网

在C语言中将文件中的多个整数扫描到整数数组中

在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

试图寻找一个类似于我的问题,但运气不太好

正在为我的data structures类处理经典的“装箱问题”,但我遇到了一件小事:扫描整数

这是故障函数的代码。其目的是创建三个文件:
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);