c - 将正确的参数传递给 strtok
问题描述
我有这个字符串,我试图用它来分隔strtok()
:
“+ 2 3\\nln 9\\ln 10”
然后我\\n
作为分隔符传递
token = strtok(argv, "\\n");
while (token)
{
args[index] = token;
token = strtok(NULL, "\\n");
index++;
}
我args
表中的第一个元素是+ 2 3
,这很棒,但是,第二个元素是l
。有谁明白为什么?如果是这样,我怎样才能把我ln 9
的放在我的args
桌子上?
解决方案
delim参数指定一组字节,用于分隔已解析字符串中的标记。调用者可以在解析相同字符串的连续调用中在 delim 中指定不同的字符串。
因此,在您的代码中,"\\n"
不是完整的字符串分隔符。您只是说strtok
分隔符是( '\'
因为双退格转义)或 'n'
.
您的字符串的标记"+ 2 3\\nln 9\\ln 10"
将是:
"+ 2 3"
\
和之间的空字符串\
(strtok 不显示它)\
和之间为空n
(strtok 不显示)"l"
" 9"
\
和之间的空字符串\
(strtok 不显示它)"l"
" 10"
为了执行你正在尝试做的事情,strtok
并不是最好的选择。我可能会编写自己的解析函数
- 使用查找
"\\n"
原始字符串中的出现strstr()
- 将前一个字符串复制到某个输出字符串或 null 终止它
推荐阅读
- prolog - 两个目标函数
- c# - 我如何循环并从我的 firebase Json 中获取值?
- javascript - 如何修复“Vue.js 组件中的默认插槽原始 html 渲染”
- javascript - 基于对另一个 IF 语句的响应的 IF 语句条件
- c# - 单击时从 LinkButton 获取 ListViewItem
- javascript - amCharts dateAxis 只显示时间而不显示日期
- java - 使用 Java 将符号链接复制到文件夹
- javascript - 基于 D3 可视化的另一个对象按特定顺序按值对对象数组进行排序
- ldap - 用户 DN 不一致的组的 rabbitmq ldap 授权
- google-maps - 从 JSON 文件中获取标记并在 GoogleMap 上显示