所以我有另一个实验室项目,就是用C编写缓存模拟器。 首先,我需要在HEX中读取地址然后我可以执行此过程。 我的想法是读取每一行并将整行存储到数组中。 例如,我想将0x00A0E00E存储到Array [0]。
文本文件如下所示:
0x00000033
0x00000003
0x00000003
0x00000003
0x00000003
0x0000005A
0x0000000B
0x00000000
0x00000009
0x0000000A
我的原始代码试图读取文件中的每个字符,这使得操作变得更加困难。 这是我的代码:
/*
*This is the program for lab assignment3 the Cache Simulator
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define BLOCK_SIZE 4 // each block store 4 words
#define FILE_NAME "address.txt"
//function prototypes
void readFile(FILE *filePtr, char* inFileName);
float hitRatio(int totalAccessMem, int totalHit);
float hitRatio(int totalAccessMem, int totalHit)
{
float hitRatio = 0.0;
hitRatio = totalHit / totalAccessMem;
return hitRatio;
}
void readFile(FILE *filePtr, char* inFileName)
{
char address[5500];
//open the file
filePtr = fopen(inFileName , "r");
int i=0;
for(i; i<5500; i++)
{
fscanf(filePtr, "%c", &address[i]);
printf("%c", address[i]);
}
//printing test
fclose(filePtr);
}
int main()
{
int totalAccessMem = 0; // default value of total access memory
int totalHit = 0; // default value of total hits
char inFileName[] = FILE_NAME;
FILE *ptr;
readFile(ptr, inFileName);
return 0;
}
另外,我可以修改每个数组成员中的成员吗? 例如,如果Array [0]中的成员是0x00000033,那么我可以编辑每个字母吗?