gpt4 book ai didi

c - 按一定顺序使用带有分隔符的 strsep() ?

转载 作者:行者123 更新时间:2023-11-30 17:54:01 25 4
gpt4 key购买 nike

我正在尝试使用 strsep() 解析文本字符串 (char *),问题是分隔符必须按顺序使用,例如:第一个标记为 ',',第二个标记为 ':'。 .

sep = " ,:-,.!.";
tofree = string;

while (token = strsep(&string, " ,:-,.!."))
{
validate(token);
}

free(tofree);

strsep() 用字符串中的任何 sep 字符分隔。读完 strsep() 和 strtok_r() 后,仍然一无所获。有没有办法在 while 循环中做到这一点?任何想法都会有帮助。谢谢

最佳答案

您可以使用 strtok() 在循环中使用分隔符数组。

strsep()strtok_r() 不是 ISO/IEC C11 Standard定义的函数。

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

int separate(const char *data, const char **delims) {
char *dat = malloc(strlen(data) + 1);
char *p;
size_t delimindex = 0;

if (!dat) return 1;
strcpy(dat, data);
p = strtok(dat, delims[delimindex++]);
while (delims[delimindex] && p) {
printf("%s\n", p);
p = strtok(NULL, delims[delimindex++]);
}
free(dat);
return 0;
}

int main(void) {
const char *delims[] = {" ", ",", ":", "-", ",", ".", "!", ".", NULL};
const char *test1 = "aaa bbb,ccc:ddd-eee,fff.ggg!hhh.iii";
const char *test2 = "foobar";
separate(test1, delims);
separate(test2, delims);
return 0;
}

关于c - 按一定顺序使用带有分隔符的 strsep() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310356/

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