Esiste un equivalente alla funzione Perls' split () in C?
Domanda
Sto cercando di dividere i numeri reali in un programma C utilizzando il punto decimale come il delimter tale che tale che dire, 1234.56 rendimenti
(int) whole_num = 1234 (Int) Frazione = 56
Tutte le idee come posso andare a fare questo? Il suo stato un po 'che non moooolto muck in giro con C, vedere? :)
Soluzione
void split( double num, int& whole_number, double& fraction) {
fraction = modf(num, &whole_number);
}
Questo funziona poiché modf prende la parte intera del doppio e restituisce la parte frazionaria.
Altri suggerimenti
Supponendo che si desidera dividere una stringa.
strtok_r
e il tuo preferito la funzione string-to-num come strtol
Se hai a che fare con un numero effettivo in virgola mobile, a differenza di una rappresentazione di stringa di tale, è necessario utilizzare modf
per spaccare le parti integranti e frazionari.
split
di Perl divide dalla regex, in modo da replicare la funzionalità completa avresti bisogno di una libreria di espressione regolare. Per general string-splitting, si può essere in grado di utilizzare strtok
, ma perché cambia la stringa sul posto, strtok_r
(descritto sulla stessa pagina) è consigliato invece.