gpt4 book ai didi

c - 拆分字符串并使用索引调用所需的元素

转载 作者:太空狗 更新时间:2023-10-29 15:37:25 26 4
gpt4 key购买 nike

用定义的分隔符拆分字符串,然后使用索引调用所需的元素在 Python 中是一项非常简单的工作。具体来说,从可变长度的列表中调用倒数第二个元素(因为给定的字符串在拆分后可以有很多元素),因为语法简单,所以很容易。

示例:

str = "swscan.apple.com"
str_list = str.split(".")
print(str_list)
print(str_list[-2])

输出为:

['swscan', 'apple', 'com']
apple

但是用 C 做同样的事情是一项相当乏味的工作。我必须使用 strtok 函数,它进一步存储在一个指针值中,然后遍历,这给了我们拆分后的元素。

我能够做到这一点,但真正让我失望的是我必须访问同一元素的倒数第二个元素的部分。有人可以帮助我如何实现这一目标吗?这是我到目前为止所做的:

int main()
{
char str[] = "swscan.apple.com";
int init_size = strlen(str);
char delim[] = ".";

char *ptr = strtok(str, delim);

while(ptr != NULL)
{
printf("'%s'\n", ptr);
ptr = strtok(NULL, delim);
}
return 0;
}

这个的输出将是:

'swscan'
'apple'
'com'

但这仍然不是一种结构化格式,我可以通过这种格式使用索引访问倒数第二个元素。任何帮助,将不胜感激。提前致谢。

最佳答案

您可以将最后两项存储在数组中并打印倒数第二项。

[...]
char delim[] = ".";
char *lastElement[2] = {0}; /* 1. To store delimited items */

char *ptr = strtok(str, delim);

while(ptr != NULL)
{
lastElement[0] = lastElement[1]; /* 2. Update */
lastElement[1] = ptr;
printf("'%s'\n", ptr);
ptr = strtok(NULL, delim);
}
if(lastElement[0]) { /* 3. Does second last item exist */
printf("%s\n", lastElement[0]); /* 4. Second last item */
}
[...]

Check on ideone

这个想法也可以扩展到获取任意元素。

关于c - 拆分字符串并使用索引调用所需的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52962040/

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