C,从字符串中获取想要的元素

时间:2013-11-28 16:16:26

标签: c

我有一个包含类似信息的char数组(基本上是字符串):

char arr[] = "Age: 22 Height: 180 Weight: 80";

我想从此Char数组中获取特定信息。例如,我需要高度数(在这种情况下为180)并将其存储在另一个Char数组中。

我可以通过使用来达到“身高:180卫......”。

strstr(arr,"Height: ");

但我需要摆脱结局并且只是简单的“180”数字

我知道我应该使用子字符串或其他类似的功能来分割字符串。但我只是不想象如何解决这个问题。 有任何想法吗 ? 谢谢

4 个答案:

答案 0 :(得分:5)

如果您需要这些数字,请使用sscanf()

int age, height, weight;
const int result = sscanf(arr, "Age: %d Height: %d Weight: %d", &age, &height, &weight);

if (result < 3) // error: couldn't match all elements

答案 1 :(得分:0)

char *height_with_label = strstr(arr,"Height: ");
size_t label_len = strlen("Height: ");
int height = default_value;
if (height_with_label)
{
    height = atoi(height_with_label + label_len);
}

答案 2 :(得分:0)

将整数h初始化为0

遍历"Height "后面的字符。测试角色是否为数字。如果是数字,则将h乘以10并添加该数字,否则结束迭代。

无需任何功能。如果您想使用某个功能让您的生活更轻松,请阅读C标准库上的参考指南,例如The GNU C Library上的参考指南。

答案 3 :(得分:0)

使用指针指向“height:”字的末尾,如下所示:

char *p = strstr(arr, "height:") + strlen("height:");

然后使用字符串库中的atof函数将数组的其余部分作为float。它将在第一个未定义的字符(非数字字符)处停止,它将获得高度值。

float height = atof(p);

您可以使用atoi获取整数而不是浮点数或atol来获取长整数。

确保包含stdlib.h库以使用这些函数。

同样考虑其他数字信息。