如何在 c 中使用 2 个 strtok?
How can i use 2 strtok in c?
本文关键字:strtok 更新时间:2023-10-16
im 在 C 中工作,我在这方面有点新。 我有这个字符串:
7EB3A50110140F3955025607EB7A50110140F3957730188
数据包从"7E"开始,所以我使用 strtok(string,"E"( 来分隔其中的 2 个数据包
B3A50110140F3955025607
B7A50110140F39577301887
现在我想消除每个令牌的 A、B、F,所以我提出了这个想法:
while(token!=NULL)
{
cout<<"addrT:"<<&token<<" value: "<<token<<"n";
token=strtok(NULL,"E");
char *token1=strtok(token,"ABCDEF");
while(token1!=NULL){
token=strtok(NULL,"ABCDEF");
}
cout<<"addrT1:"<<&token<<" value: "<<token<<"n";
}
它根本不起作用,所以我想用这个代码检查每个令牌的地址:
token=strtok(string,"E");
while(token!=NULL)
{
cout<<"addrT:"<<&token<<" value: "<<token<<"n";
token=strtok(NULL,"E");
char *token1=strtok(token,"ABCDEF");
cout<<"addrT1:"<<&token<<" value: "<<token<<"n";
}
我发现第二个令牌使用与我的第一个令牌相同的内存地址,那么我应该怎么做才能获得带有值的新令牌?
提前致谢
如果你的库支持它(即定义__STDC_LIB_EXT1__
(,你可以使用strtok_s
.请注意,在包含<string.h>
之前,您必须定义要1
__STDC_WANT_LIB_EXT1__
,因为strtok_s
是标准的可选扩展。
如果要为 POSIX 目标编码,则可以使用strtok_r
.
请注意,我还没有检查您的示例代码是否存在错误;注释表明除了需要两个独立的strtok
调用之外,您可能还有其他问题。
也许你实际上得到了一个不同的令牌。 您将第一次 strtok 调用返回的指针存储在token
中,将第二次调用返回的指针存储在token1
中,但两个输出语句都token
并且都没有发出token1
。 这就是值相同的原因。
相关文章:
- 如何在 c 中使用 2 个 strtok?
- 难以理解 strtok()
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 如何修复"调用 'strtok 没有匹配函数
- 如何在C 中不带有弦乐和strtok的情况下拆分字符串(提取单词)
- C++ 使用 Strtok 读取字符串字符时出错
- 使用标准库将循环替换为 strtok
- 用strtok分裂C弦
- 从文件(使用strtok()和strcpy())解开数据时进行分割故障
- strtok don't return nullptr
- 如何界定此文本文件?Strtok
- C++: problems with strtok
- 存储 strtok() 代币的值
- 拆分C++字符串(使用 strtok?),由逗号分隔,不使用外部库
- 在 if 语句中使用 strtok 标记
- Strtok如何处理新线
- C 的Strtok给了我意外的行为
- C: strtok value gives back null
- 在C++中使用strtok
- 使用 strtok 解析 C++ 中的命令行参数