繁体   English   中英

C Strtok分段故障

[英]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”字,因此它的功能比您原来的要多,但是对于其他程序员来说更容易阅读(以后也更容易调用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM