【发布时间】:2015-10-02 00:01:23
【问题描述】:
strsep() 在其手册页中的描述指出,在到达第一个分隔符时,
通过用空字节 (
'\0') 覆盖分隔符来终止此标记,并更新*stringp以指向该标记。
其中*stringp 是输入字符串。
我想知道是否有任何函数可以简单地更新*stringp 以指向令牌而不用'\0' 替换分隔符。我有 3 个可能的分隔符,我可以将它们作为 " \t\n" 输入到 strsep(),所以像 strchr() 这样只会搜索单个分隔符的东西不起作用(至少效率不高)。由于我需要稍后打印出完整的字符串,否则我必须执行 memcpy() 以便稍后打印字符串。
(另外,谁能解释一下为什么要这样实现..?)
【问题讨论】:
-
strchr 是您要找的吗?你的问题和你的标题有什么关系?
-
修复了标题,它来自其他东西...至于 strtchr,这会起作用,除了我有 3 个潜在的分隔符要搜索,我可以将其输入 strsep 为
" \t\n"; strchr 只搜索一个字符。我会更新问题以反映这一点。 -
@BLUEPIXY,不幸的是,如果字符串恰好以我的任何分隔符开头,它将返回长度 0;该字符串由用户输入组成,因此用户可以输入任何内容
-
我认为返回0的长度也没有问题。因为它会被程序处理。(如
strsep)