我正在尝试解析格式类似于 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/