#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
循环。如何执行完全相同的任务,而是使用数组?
答案 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位。你真的需要习惯于可移植地读取二进制数据。