【发布时间】:2014-04-07 00:05:54
【问题描述】:
以下代码行给我一个分段错误。寄存器是:fgets之后的inputPtr = 00 PRNT 02(来自stdin的正确输入),第一个strtok()之后的inputPtr = 00,第二个strtok()之后的inputPtr =(null)
返回 3 的 if/else;是错误检查。
据我了解,问题是对 strtok() 的第二次调用没有在 PRNT 中读取,所以我明白为什么会发生段错误。我真的很想能够在 PRNT 中阅读。 一点帮助会很棒!谢谢!
fgets(input, 15, stdin);
/*Tokenize instr00 into "00"(instructionCounter) "INST"(operationCode) and "OP"(operand)*/
if(atoi(strtok(inputPtr, " ")) >= 0 && atoi(strtok(inputPtr, " ")) <= 99)
{
*instructionCounter = atoi(strtok(inputPtr, " "));
}
else
{
return 3;
}
inputPtr = strtok(NULL, " ");
【问题讨论】:
-
是
fgets(input, 15, stdin);还是fgets(inputPtr, 15, stdin);
标签: c string segmentation-fault strtok