#include
#include
void save(char str[20], int n);
void prnt(char str[20], int n);
int main()
{
int n;
char str[20];
printf("Input filename:");
scanf("%s", str);
printf("Input n:");
scanf("%d", &n);
save(str, n);
prnt(str, n);
return 0;
}
void save(char str[20], int n)
{
/******start******/
int i, f1 = 1, f2 = 1;
FILE *fp;
fp = fopen(str, "wb");
fwrite(&f1, sizeof(int), 1, fp);
fwrite(&f2, sizeof(int), 1, fp);
for (i = 0; i < n/2; i++)
{
f1 = f1+f2;
f2 = f1+f2;
fwrite(&f1, sizeof(int), 1, fp);
fwrite(&f2, sizeof(int), 1, fp);
}
fclose(fp);
/******end******/
}
void prnt(char str[20], int n)
{
int i, te;
FILE *fp;
fp = fopen(str, "rb");
if (fp == NULL)
{
exit(0);
}
printf("Output:\n");
for (i = 0; i < n; i++)
{
fread(&te, sizeof(int), 1, fp);
printf("%d ", te);
}
printf("\n");
fclose(fp);
}
写入斐波拉契数列的前两项 a1 = 1, a2 = 1 ;然后进入for循环,连续写入a3 ,a4 等等
fwrite(&f1, sizeof(int), 1, fp);
fp 指向文件中的某个位置,第一次调用的话就是在开头,然后在 fp 的位置写入 1 个 当前系统 int 类型所占据空间的内容,
这个内容从指针 f1 指向的位置去取。
然后 fp 作为输入流,因为一直没有关闭,它指向的位置是每次写完之后的下一个“空白”位置。
因为一直没有关闭,它指向的位置是每次写完之后的下一个“空白”位置
fwrite 往文件中写入数据
for循环外面的fwrite是把数组的前两项(1,1)写入文件;fp指针最后指向的位置在文件末尾,fclose之后fp就失效了;文件生成的位置应该在可执行程序(*.exe)文件目录下