-1

これは簡単な質問かもしれませんが、私はそれを学んでいないので、私が尋ねなければならない質問です. これらの要素が外部ファイルから取得された場合、要素を配列に割り当てる方法がわかりません。ややこしく聞こえるかもしれませんが、基本的には次のようになります。

gn1.c と score.dat という 2 つのファイルがあります (まあ 3 つですが、これに対処する方法を学べば、同じことを他のファイルに適用できます)。

gn1.c には、次のように定義された 2D 配列があります。

int scores[13][4];

何にも初期化されていません。この配列の各要素に、別のファイル「scores.dat」に格納されている特定の整数を割り当てたいと思います。

score.dat 全体は次のようになります。

88 77 85 91 65 72 84 96 50 76 67 89 70 80 90 99 42 65 66 72 80 82 85 83 90 89 93 
98 86 76 85 99 99 99 99 99 84 72 60 66 50 31 20 10 90 95 91 10 99 91 85 80

したがって、基本的には、score[0][0] を 88、score [0][1] を 77 などにします。

値は保存されるため、後でプログラムで次のように参照できます。

if(scores[12][3] < 90)
a_ct++;

スコア[12][3] は 80 として読み取られます。

私がやろうとしていることには特定の構文がありますか、それともある種の基本を誤解していますか?

4

1 に答える 1

1

fopen、fread、fclose などの関数を使用してファイルを読み取る必要があります。これらはすべて stdio.h で定義されています。

まず、次のようにファイルを開く必要があります。

FILE * fp = fopen( "scores.dat", "r" ); // "r" means read.

次に、次のように fread でファイルを読み取ります。

char number[ 2 ];
fread( fp, 1, 2, number );

次に、atoi (asci to integer ) を使用して、その数値を整数に変換します。

scores[ 0 ][ 0 ] = atoi( number );

そして、すべての値を読み取るまで、これをループで実行します。完了したら、ファイルを閉じます。

fclose( fp );

詳細については、次のリンクを参照してください。

http://www.cplusplus.com/reference/cstdlib/atoi/

http://www.cplusplus.com/reference/cstdio/fopen/?kw=fopen/

http://www.cplusplus.com/reference/cstdio/fread/?kw=fread

http://www.cplusplus.com/reference/cstdio/fclose/

これらを参照して、関数のエラーをチェックする必要がある場合があります (上記のコードでは、わかりやすくするために行っていません)。また、C++ にも興味がある場合は、標準ライブラリの関数を使用すると、C++ も非常に簡単になります。

于 2013-04-16T01:17:13.860 に答える