2011-01-25 10 views
0

Cの整数の多次元配列に、以下のような構造のファイルからデータを読み込むにはどうすればよいですか?Cで動的割り当てを使用してファイルを読み込む

ファイル:

3 4 30 29 
23 43 4 43 

私は動的割り当てを使用して "int型**マトリックス" 変数のこの内部を置く必要があります。

更新:

を私は上に行くと、下記の機能の関係を研究することができる例示的なコードたい:

  • 多次元配列とポインタのポインタとの関係を、
  • メモリの動的割り当てとその使用に関する説明。
  • どのように外部ソースから来るデータを処理するかはわかりませんが、Cプログラム内の配列に行/列をどのように分けるかはわかりません。

共有CODE:

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

説明は上の開始:しかし、ここであなたがこれを達成する必要があるかもしれません標準ライブラリ関数のリストですの20ページは、メモリを割り当てるための1つの方法を示します。 2次元配列を、行列の行へのポインタの配列として扱います。

ファイルから行を解析するには、fopen()とし、数値を引き出すにはfscanf()と入力します。

+0

ジョンは材料が有望であるように感謝します –

3

誰もあなたのためのコードを書くつもりはありません。

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

+1「誰もあなたのためのコードを書くつもりはありません」 –

+2

しかし、私は彼らが確信していると確信しています –

+0

私は彼のためにいくつかの古い学校のコードを書いていました。 – NTDLS

関連する問題