gpt4 book ai didi

C - strtok 返回更少的数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:06 25 4
gpt4 key购买 nike

char line[81] = "$11,$10,1";
token = strtok(line, " \t\v,$");
token = strtok(NULL, ",");

printf("%s\n",token ); // its $10 from the previous strtok

if(strstr (token, "$") != NULL){
token = strtok(NULL, "$");
printf("%s\n",token ); // I want to print 10 but it prints 1.
}

我正在尝试使用 strtok 删除一个字符。然而,如您所见,它只返回一位数字。

最佳答案

如果您想要 10 作为结果,那么我认为您正在寻找的是

char line[81] = "$11,$10,1";
token = strtok(line, " \t\v,$");
token = strtok(NULL, ",");

if(*token == '$')
printf("%s\n", token + 1);
else
... do something else ...

毕竟你已经得到了你的 token ,再找也没有用。

正如@Dietrich 所说,输出看起来是正确的。让我为您分解一下。

char line[81] = "$11,$10,1";
token = strtok(line, " \t\v,$");

这会忽略开头的“$”(因为它是分隔符)并返回“11”。

token = strtok(NULL, ",");   
printf("%s\n",token ); // its $10 from the previous strtok

strtok 吃掉“,”并返回“$10”。好像也吃下面的","-- 我正在阅读的手册页允许但不要求该行为。

if(strstr (token, "$") != NULL){
token = strtok(NULL, "$");

剩余的字符串是非空的,但没有更多的“$”分隔符。因此,此 strtok 将返回整个余数,即“1”。

关于C - strtok 返回更少的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823371/

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