-1

这可能是一个简单的问题,但这是我必须要问的,因为我还没有学过。当这些元素来自外部文件时,我不确定如何将元素分配给数组。Whiiich 可能听起来有点令人困惑,它基本上是这样的:

我有 2 个文件(当然是 3 个,但是一旦我学会了如何处理这个问题,我就可以将其应用于另一个文件),gn1.c 和 score.dat。

在 gn1.c 中,我有一个二维数组,其定义如下:

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++;

score[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++ 感兴趣,它的标准库中的函数也使它变得非常简单。

于 2013-04-16T01:17:13.860 回答