gpt4 book ai didi

C - 使用 strtok 用管道拆分字符串

转载 作者:行者123 更新时间:2023-12-02 03:21:07 25 4
gpt4 key购买 nike

我有一个字符串“1|4|1577|1|10.22.33|7001390280000019|||||172.20.5.20|1”,我想拆分这个字符串以获得这样的结果:

1
4
1577
10.22.33
7001390280000019
null
null
null
null
172.20.5.20
1

但是当我在 while 循环中使用 strtok 时,没有任何内容的管道没有显示,所以我的结果是这样的:

1
4
1577
1
10.22.33
7001390280000019
172.20.5.20
1

我怎样才能得到这个结果?

这是我的代码:

int main(argc,argv)
int argc;
char *argv[];
{
char *var1="1|4|1577|1|10.22.33|7001390280000019|||||172.20.5.20|1";
char *var2=malloc(strlen(var1)+1);
strcpy(var2,var1);
while ((var2 = strtok(var2, "|")) != NULL){
printf("<<%s>>\n", var2);
var2= NULL;
}
return 0;
}

提前致谢

最佳答案

这是一个关于如何使用 strsepstrdup 的示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char *var1="1|4|1577|1|10.22.33|7001390280000019|||||172.20.5.20|1";
char *p, *var2, *var3;
var2=strdup(var1); // allocates enough space for var1 and copies the contents
var3=var2; // save off var2, since strsep changes it
while ((p = strsep(&var2,"|")) != NULL) { // p contains the token
printf("<<%s>>\n", p);
}
free(var3); // var2 is now NULL, so use var3 instead
return 0;
}

输出:

<<1>>
<<4>>
<<1577>>
<<1>>
<<10.22.33>>
<<7001390280000019>>
<<>>
<<>>
<<>>
<<>>
<<172.20.5.20>>
<<1>>

关于C - 使用 strtok 用管道拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351826/

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