¿Hay un equivalente a la función de Perls split () en C?
Pregunta
Estoy tratando de dividir números reales en un programa en C usando el punto decimal como el delimter tal que tal que decir, 1234,56 rendimientos
(int) = 1234 whole_num (Int) = fracción 56
¿Alguna idea de cómo puedo ir haciendo esto? Ha sido un muuuucho tiempo desde que mucked alrededor con C, ver? :)
Solución
void split( double num, int& whole_number, double& fraction) {
fraction = modf(num, &whole_number);
}
Esto funciona ya que modf toma la parte entera de la doble y devuelve la parte fraccionaria.
Otros consejos
Si se asume que desea dividir una cadena.
strtok_r
y su función de favoritos cadena-a-num como strtol
Si usted está tratando con un número de coma flotante real, en contraposición a una representación de cadena de este tipo, se debe usar modf
para la división de las partes integrantes y fraccionarios.
split
de Perl se divide por la expresión regular, por lo que para replicar la funcionalidad completa que había necesidad de una biblioteca de expresiones regulares. Para cadena de reparto en general, es posible que pueda usar strtok
, pero debido a que cambia la cadena en el lugar, se recomienda strtok_r
(descrito en la misma página) en su lugar.