在.dat中将值从.dat分配给数组

时间:2013-04-16 01:12:44

标签: c arrays

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

我有2个文件(3个但是一旦我学会了如何处理这个,我就可以将它应用到另一个文件中),gn1.c和scores.dat。

在gn1.c中, 我有一个2D数组,定义如下:

int scores[13][4];

它没有初始化为任何东西。我想为这个数组的每个元素分配一个特定的整数,该整数存储在另一个文件'scores.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

所以,基本上,我希望得分[0] [0]为88,得分[0] [1]为77等;

这些值将被存储,以便在程序的后面,我像这样引用它:

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

分数[12] [3]将被理解为80。

那么我正在尝试做什么或者我是否误解了某种基本的语法?

1 个答案:

答案 0 :(得分: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到整数)

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 ++感兴趣,那么它的标准库中的函数也会非常简单。