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)也可能不同。