gpt4 book ai didi

c++ - strchr, memchr 定位字符失败

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:33 25 4
gpt4 key购买 nike

我正在尝试解析格式类似于 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。我不确定为什么要这样做。

最佳答案

正如已经指出的那样,您向 strchrmemchr 传递了错误的参数。第二个参数是一个包含字符值的整数,不是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com