Existe um equivalente para a função Perls' split () em C?
Pergunta
Eu estou tentando dividir números reais em um programa C usando o ponto decimal como o delimter tal que tais que dizem: 1234.56 rendimentos
(int) whole_num = 1234 (Int) = fracção 56
Alguma idéia de como eu posso ir sobre fazer isto? Tem sido um loooong tempo desde que eu muck ao redor com C, ver? :)
Solução
void split( double num, int& whole_number, double& fraction) {
fraction = modf(num, &whole_number);
}
Isso funciona desde modf toma a parte inteira do casal e retorna a parte fracionária.
Outras dicas
Assumindo que você quer dividir uma string.
strtok_r
e sua função favorita corda-de-num como strtol
Se você está lidando com um número real de ponto flutuante, em oposição a uma representação de cadeia de tal, você deve usar modf
para dividir as partes integrantes e fracionários.
splits split
do Perl por regex, de modo a replicar a funcionalidade completa você precisaria de uma biblioteca regex. Para corda-splitting geral, você pode ser capaz de usar strtok
, mas porque muda a corda no local, strtok_r
(descrito na mesma página) é recomendado em vez.