2011-01-25 4 views
0

아래의 구조와 같은 파일에서 C로 된 정수의 다차원 배열로 데이터를 읽으려면 어떻게해야합니까?C에서 동적 할당을 사용하여 다차원 배열로 파일 읽기

파일 :

3 4 30 29 
23 43 4 43 

I는 동적 할당을 사용하여 "INT ** 매트릭스"변수의 내부에 넣을 필요가있다.

업데이트 :

는 내가 가서 아래의 기능 사이의 관계를 연구 할 수있는 예제 코드합니다 :

  • 다차원 배열과와의 관계를 가리키는 포인터 포인터;
  • 메모리의 동적 할당과 사용에 대한 설명.
  • 우리가 크기를 모르는 외부 소스에서 오는 데이터를 처리하는 방법, C 프로그램의 내부 배열에 행/열을 어떻게 분리 할 것인가?

코드 공유 :

int** BuildMatrixFromFile(char* infile, int rows, int cols){ 

    FILE *fpdata; // deal with the external file 
    int** arreturn; // hold the dynamic array 
    int i,j;  // walk thru the array 

    printf("file name: %s\n\n", infile); 

    fpdata = fopen(infile, "r"); // open file for reading data 

    arreturn = malloc(rows * sizeof(int *)); 
    if (arreturn == NULL) 
    { 
     puts("\nFailure trying to allocate room for row pointers.\n"); 
     exit(0); 
    } 

    for (i = 0; i < rows; i++) 
    { 

     arreturn[i] = malloc(cols * sizeof(int)); 
     if (arreturn[i] == NULL) 
     { 
      printf("\nFailure to allocate for row[%d]\n",i); 
      exit(0); 
     } 

     for(j=0;j<cols;++j) 
      fscanf(fpdata, "%d", &arreturn[i][j]); 

    } 

    fclose(fpdata); // closing file buffer 

    return arreturn;  
} 

감사합니다.

+5

평소처럼 : 무엇을 이미 시도해 봤습니까? –

+1

그것은 숙제처럼 들린다. –

+0

당신의 질문은 무엇입니까? 파일에서 읽는거야? 다차원 배열? 동적 할당? 포인터 - 투 - 포인터? –

답변

0

설명을에 시작 : 그러나 여기 당신이 이것을 달성하기 위해해야 ​​할 표준 라이브러리 함수의 목록입니다페이지은 메모리를 할당하는 한 가지 방법을 보여줍니다. 2d 배열을 행렬의 행에 대한 포인터 배열로 처리합니다.

파일에서 줄을 파싱하는 작업은 fopen()fscanf() 일 수 있습니다.

+0

존에게 유망한 재료를 주셔서 감사합니다. –

3

아무도 당신을 위해 코드를 작성하지 않습니다.

  • fopen()
  • fscanf()
  • fclose()
  • malloc()
  • free()
+0

+1 "아무도 당신을위한 코드를 작성하지 않을 것입니다" –

+2

그러나 나는 그들이 할 것이라고 확신합니다. –

+0

나는 그를 위해 약간의 구식 코드를 작성하고있었습니다. – NTDLS