如何从输入中读取多种类型?

时间:2013-05-31 03:33:35

标签: c

我的输入文件如下所示。

 00 READ 9
 01 READ 10
 02 WRIT 9
 03 LOAD 10

我只能使用5个整数变量(如 - reg1,reg2,reg3,reg4,reg5)并且必须读取每一行并将指令(如READ)转换为相应的代码10。

读入的信息将存储在长度为100的整数数组中。因此,前几行将被读取并转换和存储,如下所示:

 0     1    2
 1009  1010 1109

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

正如我所看到的,每个助记符都是直接4个字节。您可以简单地分配一个32位整数,并将其地址提供给数据读取例程,以读取4个字节。然后“READ”将变为1145128274,“WRIT” - 1414091351,依此类推。这比字符串更容易比较。

或者相反 - 读取所有输入,然后设置指向助记符的(int *)指针。这样的事情:

char input[]="10 READ 09";
int* opcode = (int*)&input[3];
if( *opcode == 1145128274 ) // then it's READ

答案 1 :(得分:0)

我不知道这是否是解决此问题的最有效方法,但在读取第一个整数作为地址后,我调用了一个函数,该函数执行以下代码将指令转换为相应的整数值。

我使用枚举将指令设置为代码开头的相应值。

getchar();
*reg1 = (int)getchar();
*reg2 = (int)getchar();
*reg3 = (int)getchar();
*reg4 = (int)getchar();

switch( *reg1 ){
    case (int)'R':
        if( *reg2 == (int)'E' && *reg3 == (int)'E' && *reg4 == (int)'D' ){
            *reg4 = READ;
            return 1;
        }else{
            return 0;
        }
        break;
    case (int)'W':
        ...

}