Y at-il un équivalent à la fonction split () de Perls en C?
Question
Je suis en train de diviser des nombres réels dans un programme C en utilisant la virgule comme delimter tel que tel que dire, 1234.56 rendements
(int) = 1234 whole_num (Int) = fraction 56
Toutes les idées comment je peux aller à faire cela? Son été un loooong alors que je déconné autour avec C, voir? :)
La solution
void split( double num, int& whole_number, double& fraction) {
fraction = modf(num, &whole_number);
}
Cela fonctionne depuis modf prend la partie entière de la double et renvoie la partie décimale.
Autres conseils
En supposant que vous voulez diviser une chaîne.
strtok_r
et votre fonction string-à-num favori comme strtol
Si vous avez affaire à un nombre à virgule flottante réelle, par opposition à une représentation de chaîne de ce fait, vous devez utiliser modf
pour séparer les parties intégrales et fractionnaires.
La split
de Perl se divise par regex, pour ainsi reproduire toutes les fonctionnalités que vous auriez besoin d'une bibliothèque regex. Pour les chaînes de fractionnement général, vous pourrez peut-être utiliser strtok
, mais parce qu'il change la chaîne en place, strtok_r
(décrit sur la même page) est recommandée à la place.