我正在尝试读入一个文件,然后为某些命令解析该文件。 (我正在模拟 CPU)。 一切都编译了,看起来它会工作,但是当我用我的第一个参数作为输入文件运行程序时,没有任何反应。
我正在使用
fscanf()
读取我的文件,并使用字符串变量读取命令。我的 clock.cpp
中有一个解析函数,我的 main 中有一个解析器。我希望 emul.cpp
解析设备名称,然后 clock.cpp
解析时钟滴答声并转储它们。
clock.cpp
:
#include "Clock.h"
#include<stdio.h>
void Clock::reset(){
internCount = 0;
}
void Clock::tick(unsigned int clockTicks){
for(int i = 0; i <= clockTicks; i++){
internCount++;
}
}
void Clock::dump(){
printf("Clock: %d\n\n", internCount);
}
void Clock::parse()
{
char *argument_c;
while(fscanf(infile, "%s", &argument_c) > 0);
string argument(argument_c);
if(argument == "reset")
{
reset();
}
else if(argument == "tick")
{
int *num;
fscanf( infile, "%d", num);
tick(*num);
}
else if(argument == "dump"){
dump();
}
}
void Clock::doCycleWork(){
}
Clock &getClock(){
static Clock clock;
return clock;
}
主要:
#include "clock.h"
#include <stdio.h>
using namespace std;
int main(int argc, char **argv){
if (argc < 2){
cerr << "usage: cs3421_emul <data file>" << endl;
return 1;
}
FILE *infile = fopen(argv[1], "r");
Clock &clock = getClock();
char *deviceName_c;
while(fscanf(infile, "%s", &deviceName_c) > 0){
string deviceName(deviceName_c);
if (deviceName == "clock"){
clock.parse();
}
}
fclose(infile);
}