这是我打破SIC装配线的功能。 这是我的inputFile
的示例行myData
写入文件的内容是:
FIRST STL RETADR SAVE RETURN ADDRESS
RETADR SAVE RETURN ADDRESS
每当我尝试使用void tokenizeLine(int format)
{
fgets(inputLine,150,inputFile);
char * label, * opcode, * operand, inputLine[150];//Variables to hold tokens
char whiteSpaceDelim[] = " \t\r\n\v";//whitespaces
//FORMAT1: LABEL, OPCODE, OPERAND
//FORMAT2: OPCODE, OPERAND
if(format==FORMAT1)
{
label = strtok(inputLine,whiteSpaceDelim);
opcodePointer = strtok(NULL,whiteSpaceDelim);
operand = strtok(NULL,whiteSpaceDelim);
comment = strtok(NULL,whiteSpaceDelim);//used to place a \0 at the end of operand pointer
}
else//must be format 2
{
opcodePointer = strtok(inputLine,whiteSpaceDelim);
operand = strtok(NULL,whiteSpaceDelim);
comment = strtok(NULL,whiteSpaceDelim);
}
}
仅将操作数写入时,我也会获得跟随它的注释。 fprintf
是否未将comment = strtok(NULL,whiteSpaceDelim)
放在操作数的末尾?
\0