2011-01-09 7 views
6

C의 파일로 2D 배열 쓰기 : 내가 작성하고 2 차원 배열을 읽으려면내가 파일에 1D 배열을 작성하려면 아래의 코드를 사용하는 데 사용

FILE *fp; 
float floatValue[5] = { 1.1F, 2.2F, 3.3F, 4.4F, 5.5F }; 
int i; 

if((fp=fopen("test", "wb"))==NULL) { 
    printf("Cannot open file.\n"); 
} 

if(fwrite(floatValue, sizeof(float), 5, fp) != 5) 
    printf("File write error."); 
fclose(fp); 

/* read the values */ 
if((fp=fopen("test", "rb"))==NULL) { 
    printf("Cannot open file.\n"); 
} 

if(fread(floatValue, sizeof(float), 5, fp) != 5) { 
    if(feof(fp)) 
     printf("Premature end of file."); 
    else 
     printf("File read error."); 
} 
fclose(fp); 

for(i=0; i<5; i++) 
    printf("%f ", floatValue[i]); 

내 질문은을? 대신 당신이 다른 하나의 예를 들어 추가됩니다 루프에 대한 하나의

답변

6

당신은 동일한 방법을 사용할 수 있습니다 단지 ... 다음은

float floatValue[3][5] = {{ 1.1F, 2.2F, 3.3F, 4.4F, 5.5F }, 
          { 6.6F, 7.7F, 8.8F, 9.9F, 8.8F }, 
          { 7.7F, 6.6F, 5.5F, 4.4F, 3.3F }}; 
int i,j; 

...

을 변경한다
if(fwrite(floatValue, sizeof(float), 3*5, fp) != 3*5) 

...

... 당신은 다른 컴파일러/시스템 간 또는 단지 미래의 일부 호환성을 갖고 싶어 특히이/부하 데이터를 저장하는 가장 좋은 방법은 아니다 물론

for(j=0; j<3; j++) { 
    for(i=0; i<5; i++) 
     printf("%f ", floatValue[j][i]); 
    printf("\n"); 
} 

참고. 저장 및 복원에 대한 주제는 종종 serialization으로되어 있으며 아주 작은 사소한 오버 헤드로 인해 데이터 모델이 복잡해지면 훨씬 더 유연 해집니다.

3

:

for(i=0;i<lines;i++) { 
for(j=0;j<num;j++) { 
    fprintf(file,"%d ",array[i][j]); 
} 
fprintf(file,"\n");} 
+0

이것은 합리적인 코드이지만 op는 어레이의 이진 표현을 쓰거나 읽고 싶은 것을 찾고 있습니다. – EvilTeach

관련 문제