我正在尝试解析类似1-3,5-7
的格式的字符串。我需要阅读1,3和5,7。
我在做什么
char *dup_string;
dup_string = strdup(data);
tok = strtok(dup_string, ",");
while (tok != NULL)
{
char *rangeTok;
rangeTok = (char *)memchr(tok, "-", strlen(tok));
startpage = atoi(tok);
if(rangeTok != NULL)
{
*rangeTok++;
endpage = atoi(rangeTok);
}
else
endpage = startpage;
tok = strtok(NULL,",");
}
在这里
memchar
返回badptr,我尝试使用strchr
,它也返回batptr
。为什么它返回badptr
的任何想法。仅供引用,我之前尝试过:
tok = strchr(dupstring, ",");
在一段时间内效果很好,并开始返回
badptr
。我不确定为什么要这么做。 最佳答案
正如已经指出的那样,您将错误的参数传递给strchr
和memchr
。第二个参数是一个保存字符值的整数,而不是const char *
。
这条线
rangeTok = (char *)memchr(tok, "-", strlen(tok));
应该是
rangeTok = (char *)memchr(tok, '-', strlen(tok));
或最好
rangeTok = strchr(tok, '-');
顺便说一句,这
badptr
是什么?你只是说NULL
吗?关于c++ - strchr,memchr无法找到字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16861393/