-1

出于某种原因,这段代码

for (i = 0; i < 1024; i++)
    mem[i] = 0;

  //Read input file
  instructions.open (fname.c_str(), fstream::in);
  if (!instructions.is_open() ) {
    std::cout << "Error 404: file not found\n";
    exit (404);
  }

for (i = initial_pos; !instructions.eof(); i++) 
  instructions >> mem[i];

正在读取这个文件

1
21
1
9
11
9
16
11
9
3
60
2
0
21
0
1
11
4
0
2
2
90
0

像这样:

1
33
1
32
11
0
28
11
1
26
11
2
24
11
3
22
41
1
1
51
8
22
1
3
21
2
0
60
34
12
5
2
2
3
90
0
0
0
1
0

>> 操作数似乎向内存添加随机数有什么特别的原因吗?请注意,mem 是一个初始化的数组,所有数字都是在读取后打印出来的。

4

2 回答 2

2

冒着写第一百次的风险,你的代码应该是这样的:

std::ifstream infile(fname.c_str());   // "in" is implied

if (!infile) { /* error, could not open file */ }

for (int n; infile >> n; )
{
    // we read the number n
}

如果您只想要一个整数容器,那就更好了:

#include <vector>
#include <iterator>
#include <fstream>

std::ifstream infile(fname.c_str());
std::istream_iterator<int> beg(infile), end();

std::vector<int> v(beg, end);

// now "v" contains all the integers.
于 2013-01-14T23:38:13.127 回答
0

解决它。我错误地调用了可执行文件。

它应该是:

[ [ [ [输入姓名]]]]

但我这样称呼它:

sim test1.bin

所以模拟器将初始PC设置为“test1.bin”,并将输入设置为默认输入“input.bin”,所以我读错了文件。

我想这总是归结为糟糕的家庭作业发音。

于 2013-01-15T03:05:50.333 回答