从c中的文件中读取2个整数

时间:2013-08-14 04:32:07

标签: c arrays file-io

我的代码要求我打开一个文件。 该文件的第一行包含1到1000之间的2个整数。 我必须阅读这两个数字,用它们来创建一个与这些数字相对应的二维数组 (例如50,200是 - array [50] [200])。 创建此数组后,我必须读取文件的其余部分并存储数据(在2个数字的维度网格中设置)。

最好的方法是什么。我想做一个getline,然后做一个for循环,将chars追加到row然后列然后转换为int,但是我的编译器一直出现错误。

2 个答案:

答案 0 :(得分:0)

文件是二进制还是文本?如果使用二进制文件,则使用fread,它可以让您轻松读取原始字节。如果它的文字使用fscanf

答案 1 :(得分:0)

假设输入总是这种形式(有点不清楚):

2,4
aaaa
b  b

...然后一种方法是读取矩阵的维度(行数,列数),然后通过一次读取一个字符矩阵的每个元素来跟进。这将是这样的:

int rows = getchar();

// Skip ','.
getchar();

int cols = getchar();

int arr[ rows ][ cols ];
int r = 0;
int c = 0;

for ( int byte = getchar(); byte != EOF; byte = getchar(), c++ ) {
  if ( c == cols ) {
    c = 0;
    r++;
  }

  arr[ r ][ c ] = byte;
}

...您需要将输入文件传递给您的程序,如下所示:

./program.out < input.txt

备注:这是根据您的特定问题集量身定制的,如果出现以下情况则无效:输入无法保证填充整个数组,输入为尺寸不好,尺寸溢出等(很多问题) - 所以一定要考虑到这些。