使用数组读取和显示二进制文件

时间:2017-03-02 22:07:09

标签: c file-io

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main () 
{
    FILE *fp;
    int r, i;

    char fp_string [600] = "num1000.bin";

    fp = fopen(fp_string, "rb");

    for (i=0;i<1000;i++)
    {
        fread(&r, sizeof(int), 1, fp);
        printf("%d, ", r);
    }

    fclose(fp);
    getch();
    return 0;
}

此代码当前读取并显示名为num1000.bin的二进制文件,其中包含1000个随机数。此代码使用for循环。如何执行完全相同的任务,而是使用数组?

2 个答案:

答案 0 :(得分:1)

定义数组:

int r[1000];

要从您的文件中读取1000个文件,请使用fread

fread(r, sizeof(int), 1000, fp);

正如您在fread函数的描述中所看到的,其中一个参数指定要读取的元素数。将其从1更改为1000。

要显示您的号码,您仍然需要循环。

for (i=0;i<1000;i++)
{
    printf("%d, ", r[i]);
}

请注意它现在是r[i] - 因为r现在是一个包含1000个数字的数组,而不仅仅是一个。

答案 1 :(得分:1)

Firslty你需要知道随机数的格式。据推测它们是原生的int格式,但你需要检查,特别是因为它们是rnadom,所以不可能进行常识测试。

如果您知道该号码正好是1000,您可以使用fread

进行阅读
 int r[1000];
 fread(r, sizeof(int), 1000, fp);

但这是一个坏习惯。数据可能会提前结束。格式可能与本机格式相反,或16或64位而不是32位。你真的需要习惯于可移植地读取二进制数据。

相关问题