gpt4 book ai didi

c - 如何在 C 中使用 strtok() 分割字符串?

转载 作者:行者123 更新时间:2023-11-30 20:52:00 25 4
gpt4 key购买 nike

我正在尝试使用 strtok 分割字符串,但无法打印字符串的第二部分。

 int main (void) {
char str[128];
char *ptr;

strcpy (str, "123456 789asdf");
strtok (str, " ", &ptr);

printf ("'%s' '%s'\n", str, ptr);
return 0;
}

结果是这样的:

'123456' '12jfs90123#4'

最佳答案

在我看来,您似乎误解了 strtok 的工作原理。

第二个参数应该指向一个分隔符字符串。 “当前”字符串是返回值。在第一次调用时,您传递要拆分的字符串。在后续调用中,您可以为第一个参数传递 NULL。

strtok 还会修改您传递给它的字符串,因此您绝对不能将字符串文字作为第一个参数传递。

工作代码通常看起来至少更像这样:

char input[] = "123456 789asdf";

char *substring = strtok(input, " ");

do {
printf("%s\n", substring);
} while (strtok(NULL, " "));

但是,如果您知道只会查找两个参数,那么使用 scanf 可能会更容易:

char s1[256], s2[256];

sscanf(str, "%255s %255s", s1, s2);

关于c - 如何在 C 中使用 strtok() 分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com