Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 bin文件中整数的fread()数组_C_Arrays_Fread_Bin - Fatal编程技术网

C bin文件中整数的fread()数组

C bin文件中整数的fread()数组,c,arrays,fread,bin,C,Arrays,Fread,Bin,我想读取二进制文件的内容,并将其存储到数组中。二进制文件有一组整数,我需要从特定位置读取它,直到数组中存储了一组整数 int array[atoi(argv[1])] ; for (i = 0; i < atoi(argv[1]);i++){ array[i] = rand() %100; printf(" %d ", array[i]); } // Creates an array filled with random

我想读取二进制文件的内容,并将其存储到数组中。二进制文件有一组整数,我需要从特定位置读取它,直到数组中存储了一组整数

int array[atoi(argv[1])] ;   
for (i = 0; i < atoi(argv[1]);i++){
            array[i] = rand() %100;
            printf(" %d ", array[i]);
        } // Creates an array filled with random numbers

        fp = fopen("array","w+");
        fwrite(array, sizeof(array), sizeof(array), fp);
        fclose(fp); // Creates the bin file and close it.

// In this example the bin file has 20 integers, and I want to read from the 5th integer till the 16th integer
    int b[15]; 
    int i;
    FILE *fl;
    fl = fopen("array","rb");
    fseek(fl, 5, SEEK_SET);
    for (i = 0; i < 12; i++){
        fread(&b[i], sizeof(int),1, fl);
        fl++;
        printf(" %d ", b[i]);
    }
int数组[atoi(argv[1]);
对于(i=0;i

最后,我应该将所有整数存储在每个单元格的b数组中,但我无法使其工作。

您在
fwrite()
调用中写的太多了。它应该是
fwrite(array,sizeof(array),1,fp)。您不需要循环。您可以使用
fread()
nitems
参数在一次调用中读取多个整数。当您说第5个整数时,索引是从0开始还是从1开始?如果你想的是1、2、5,那么你必须使用
fseek(fl,4*sizeof(int),SEEK\u SET)
关注您的评论并使其正常工作,谢谢@酒吧招待员如果你能详细介绍一下如何使用nitems,我可以把它添加到我的代码中一个小小的警告:如果你的文件是由不同于它的体系结构的计算机读取的,那么结果可能是错误的。例如,整数的位长度可能不同,位顺序(endian ness)也可能不同。