C Strtok Segfaulting



我不确定为什么以下代码会出错:

char * buffer = "SIZE";
char * tempString;
tempString = strtok(buffer, " ");
if(strcmp(tempString, "SIZE") == 0){    
    tempString = strtok(NULL, " ");           <----Faulting here
}

既然没有什么可以标记的了,tempString 不应该等于 NULL 吗?提前感谢您的任何帮助。

有两个问题:

首先,strtok需要第一个参数的可修改字符串,而示例中buffer则不需要。 试试这个:

char buffer[] = "SIZE";

其次,strcmp 不处理strtok可以返回NULL

if (NULL != tempString && strcmp(tempString, "SIZE") == 0)

只需按照参考资料所述查看标记化元素,如果您遵循它,您将拥有一种干净的方法。

正确的代码:

char buffer[] = "SIZE";
char * tok;
tok = strtok(buffer, " ");
while(tok != NULL)
{
  if(strcmp(tok, "SIZE") != 0)    
    break;
  tok = strtok(NULL, " ");        //   <----Faulted here
}

是的,它可能会跳过缓冲区中的多个"SIZE"单词,因此它比您最初所做的要多一些,但对于其他程序员来说更容易阅读(并且以后更容易回忆起它,对您来说也是如此)。

相关内容

  • 没有找到相关文章

最新更新