2013-02-21 52 views
0

我正在尝试将数字写入二进制文件,然后再读取它们。尝试从二进制文件读取数字(fread,fwrite)

但是,当我输入更多然后13个数字节目stucks,并不显示我的结果。

这里是我的代码:

#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; 
} 
+2

您为10个值分配空间并希望能够输入13个以上的空间? – 2013-02-21 20:49:58

+0

好吧,我将它改为100,但是当我输入13时,它显示我无意义 – 2013-02-21 20:57:07

回答

2

此:

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

读取sizeof(b) * n字节数组bb只有sizeof b字节。

您的电话号码与您的fwrite呼叫有类似的问题。

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

相关问题