strtok_r 提取引号内的字符串

发布于 2024-11-28 12:37:41 字数 216 浏览 1 评论 0原文

我的字符串是:

He is a "funny" guy

如何使用 strtok_r 提取该字符串?

strtok_r(str, "\"", &last_pointer);

这是正确的做法吗?上面的语句会跳过第一个 " 吗?

my string is:

He is a "funny" guy

How can I extract that using strtok_r?

strtok_r(str, "\"", &last_pointer);

Is this a correct way of doing it? will the statement above skip first " ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千笙结 2024-12-05 12:37:42

这个 POSIX 函数将跳过所有前导 '\"' 而不是第一个。使用 NULL 作为第一个参数第二次调用 strtok_r 并享受乐趣。

this POSIX function will skip all leading '\"' not the first. call strtok_r a second time with NULL as first parameter and have fun.

小草泠泠 2024-12-05 12:37:41

我的 strtok_r 文档说

char *strtok_r(char *str, const char *delim, char **saveptr);

第一次调用strtok_r()时,str应该指向要解析的字符串,并且saveptr的值被忽略。在后续调用中,str 应为 NULL,并且 saveptr 自上次调用以来应保持不变。

所以你应该先调用它

strtok_r(str, "\"", &last_pointer);

,然后调用它

strtok_r(NULL, "\"", &last_pointer);

My documentation for strtok_r says

char *strtok_r(char *str, const char *delim, char **saveptr);

On the first call to strtok_r(), str should point to the string to be parsed, and the value of saveptr is ignored. In subsequent calls, str should be NULL, and saveptr should be unchanged since the previous call.

So you should call it first with

strtok_r(str, "\"", &last_pointer);

and afterwards with

strtok_r(NULL, "\"", &last_pointer);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文