【发布时间】:2020-04-09 22:59:31
【问题描述】:
我正在尝试仅提取“Hello World”并将其存储在字符串中。我想忽略第一个“p”。例如,我只想使用 strtok 打印出“Hello World”。 我想删除第一个单词和之后的空格字符。我该怎么做?
int main()
{
char string[50] = "p Hello world";
}
【问题讨论】:
-
更具体。你想忽略字符串中的每个
p吗?或者只有当他们开始字符串?或者仅当它们不与任何其他字母相邻时?你的问题很模棱两可。修复它,以便只有一种解释。 -
strtok 已被 strsep(3) 淘汰。
-
@WilliamPursell:据我所知,
strsep不是 ISO C 标准的一部分。因此,它不能使属于 ISO C 标准的函数过时,例如strtok。 -
对于您的情况
strchr (string, ' ') + 1最简单的方法是在"Hello world"中获取指向'H'的指针。您可以打印它puts (strchr (string, ' ') + 1)或复制到一个新字符串,例如strcpy (string2, strchr (string, ' ') + 1)(和strchr将适用于常量字符串) -
@WilliamPursell 不完全是。来自 strsep 的 Linux 手册页:引入了 strsep() 函数以替代 strtok(3),因为后者无法处理空字段。但是,strtok(3) 符合 C89/C99,因此更便携。
标签: c