Gibt es ein Äquivalent zu Perls' split () Funktion in C?
Frage
Ich versuche, reelle Zahlen in einem C-Programm zu spalten den Dezimalpunkt als delimter mit, so dass eine solche, die sagen, 1234.56 Ausbeuten
(int) whole_num = 1234 (Int) fraction = 56
Irgendwelche Ideen, wie ich über das tun dies gehen kann? Es ist schon eine Weile her, seit ich loooong mit C muckte um, sehen Sie? :)
Lösung
void split( double num, int& whole_number, double& fraction) {
fraction = modf(num, &whole_number);
}
Das funktioniert seit modf den ganzzahligen Teil des Doppel nimmt und gibt den Bruchteil.
Andere Tipps
Angenommen, Sie eine Zeichenfolge teilen möchten.
strtok_r
und Ihre Lieblings String-to-num-Funktion wie strtol
Wenn Sie mit einem tatsächlichen Gleitkommazahl zu tun hat, als solcher zu einer String-Darstellung gegenüber, sollten Sie eine href verwenden <= "http://www.opengroup.org/onlinepubs/009695399/functions/modf .html“rel = "nofollow noreferrer"> modf
zum Spalten aus den Integral- und Bruchteilen.
Perl split
spaltet von regex, so die volle Funktionalität replizieren Sie eine regex Bibliothek benötigen würde. Für allgemeines String-Splitting, können Sie in der Lage sein zu verwenden strtok
, sondern weil es die Zeichenfolge an Ort und Stelle ändert, strtok_r
(auf der gleichen Seite beschrieben) wird empfohlen, statt.