gpt4 book ai didi

c - 将字符串拆分为C中的整数数组

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

我在一个 C 应用程序中有一个逗号分隔的字符串,我将它放在一起,我想将它拆分成一个整数值数组。该字符串可以包含任意数量的逗号分隔值,因此我也没有数组的初始大小。

例如

"345,3345,35,75,52,386"

并且 id 喜欢做类似...

int parsedArray[] = parseString("345,3345,35,75,52,386");

这在 Java 或 C# 中是轻而易举的事,但我认为在谈到 C 时我有点力不从心。关于如何实现这一目标的任何想法?

最佳答案

在 C 中不可能具有您的帖子中暗示的签名的函数,因为函数不能返回动态大小的数组。这里有两种选择:

  • 将数组和最大计数传递给 parseString,或者
  • 返回表示动态分配数组的指针及其实际大小。

第一种方法将数组的大小限制为调用者建立的某个数字;第二种方法要求在完成后释放数组。

第一种方法之后的函数如下所示:

void parseString(int data[], size_t maxSize);

采用第二种方法的函数如下所示:

int *parseString(size_t *actualSize);

或者像这样:

void parseString(int ** data, size_t *actualSize);

第二种情况可用于结合这两种方法,尽管 API 会变得不那么直观。

至于解析本身,存在许多选项。 “轻量级”选项之一是使用 strtol,如下所示:

char *end = str;
while(*end) {
int n = strtol(str, &end, 10);
printf("%d\n", n);
while (*end == ',') {
end++;
}
str = end;
}

Demo.

关于c - 将字符串拆分为C中的整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29588975/

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