试图从二进制文件中读取数字(fread,fwrite)

时间:2013-02-21 20:47:06

标签: c fwrite fread

我正在尝试将数字写入二进制文件,然后将其读回。

但是当我输入超过13个数字时,程序卡住并且不向我显示结果。

这是我的代码:

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


int main()
{
FILE *fp;

int  a[100],
     b[100],
     i,n;

fp=fopen("temp.dat", "w+b");

printf("Enter N: \n");
scanf("%d",&n);

for(i=0;i<n;i++){
    printf("Enter (%d) number \n",i+1);
    scanf("%d",&a[i]);
}

    fwrite(a, sizeof(a), n , fp);
    rewind(fp);
    fread(b, sizeof(b), n , fp);


printf("Results \n");
for (i = 0; i < n; i++)
    printf("%d \n", b[i]);


fclose(fp);
system("pause");
return 0;
}

1 个答案:

答案 0 :(得分:2)

此:

fread(b, sizeof(b), n , fp);

sizeof(b) * n数组中读取b个字节,但b只有sizeof b个字节。

您的fwrite电话也存在类似问题。

我建议您再次阅读freadfwrite函数手册。