如何从C中的文件中读取复数?

时间:2012-11-17 12:39:03

标签: c file matrix readfile complex-numbers

我有一个包含64x64矩阵值的文本文件,它们是复数。我想从文件中读取它们但我遇到了困难。使用C的复杂库或为复数创建新的数据类型对我来说没问题,我只需要正确读取它们。

我的意思是,是否使用:

#include <complex.h>
int complex matrix[64][64];

或为其创建数据类型:

typedef struct {
    int real, imag;
} Complex;

Complex matrix[64][64];
只要阅读正确,

对我来说没问题。

下面你可以找到2x3矩阵,只是为了演示我的文件中的数字:

{{-32767, 12532 + 5341I, -3415 - 51331I}
 {32767I, 32609 + 3211I, 32137 + 6392I}}

因为你可以看到一些部分同时具有实部和虚部,有些只是虚部而有些只是实部,而所有虚数都在末尾有大写'i'字母。如果你可以帮助我,我会很高兴。

2 个答案:

答案 0 :(得分:0)

数字的组织方式无关紧要,如果它们在记忆中对齐,你可以一次阅读它们:

Complex matrix[64][64];
fread(matrix,sizeof(Complex),64*64, your_file_pointer);

写作相同:

fwrite(matrix, sizeof(Complex), 64*64, your_file_pointer);

答案 1 :(得分:0)

两种常见的设计模式适用:
1)接受“语言”的Recursive descent parser 2)State Machine

这两种情况都可以从read_char()函数中受益,如果遇到错误则会以错误退出 除了'{','}',0-9,i,+, - 之外的任何内容,以及跳过所有空格(ch <= 32)。

状态机可以更加通用:如果在任何时候有“+”或“ - ”,则可以添加或减去下一个值(以“i”或“i”结尾)到目前的累计价值。 (然后状态机能够计算1 + 2-1 + 1i,同时它......)