在C中是否有Perls的split()函数?

时间:2009-06-03 13:25:46

标签: c split strtok

我正在尝试使用小数点作为分隔符在C程序中拆分实数,这样就可以说1234.56产生

(int)whole_num = 1234 (int)fraction = 56

我有什么想法可以做到这一点?自从我和C一起乱逛之后,它一直很流行,看到了吗? :)

3 个答案:

答案 0 :(得分:4)

void split( double num, int& whole_number, double& fraction) {
    fraction = modf(num, &whole_number);
}

这是有效的,因为modf接受double的整数部分并返回小数部分。

答案 1 :(得分:4)

假设您要拆分字符串。

strtok_r和您最喜欢的字符串到数字函数,例如strtol

答案 2 :(得分:1)

如果您正在处理实际的浮点数,而不是字符串表示,则应使用modf来分割整数和小数部分。

Perl的split按正则表达式进行拆分,因此要复制完整功能,您需要一个正则表达式库。对于常规字符串拆分,您可以使用strtok,但由于它会就地更改字符串,因此建议使用strtok_r(在同一页面上进行说明)。