2013-02-21 3 views
0

숫자를 이진 파일에 쓰고 다시 읽으려고합니다.이진 파일 (fread, fwrite)에서 숫자 읽기 시도

하지만 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; 
} 
+2

10 개의 값에 대해 공간을 할당하고 13을 초과하여 입력 할 수 있으리라 기대하십니까? –

+0

좋아, 100으로 바꿨지 만, 13을 입력하면 나에게 넌센스가 나타난다. –

답변

2

이 :

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

b 배열에 sizeof(b) * n 바이트를 읽어하지만 sizeof b 바이트 b

여기 내 코드입니다.

fwrite 전화와 비슷한 문제가 있습니다.

freadfwrite 기능을 다시 읽으시기 바랍니다.