Como fazer o programa trocar virgula por ponto

1. Como fazer o programa trocar virgula por ponto

David Christenes Silva Ferrari de Mattos
Redfog

(usa Debian)

Enviado em 30/04/2017 - 19:33h

Fiz um programa em C, porém ao digitar o valor do float usa-se o ponto, mas na norma brasileira sabemos que nós utilizamos a "," , como ficaria o código para que se digite uma virgula na entrada, e na saída também venha a vírgula?


  


2. Re: Como fazer o programa trocar virgula por ponto

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 30/04/2017 - 20:14h

Utilizando locale.

Veja:


#include <locale.h>
#include <stdio.h>

int main() {
float f = 12345.67;

// 12345.67
printf("%'.2f\n", f);

// armazena o locale antigo
const char * old_locale = setlocale(LC_NUMERIC, NULL);

// mudamos para o locale local, no meu caso, LC_NUMERIC=pt_BR.UTF-8
setlocale(LC_NUMERIC, "");

// 12.345,67
printf("%'.2f\n", f);

// se quiser restaurar o local anterior
setlocale(LC_NUMERIC, old_locale);
}


Para observar o locale que está configurado no seu computador, basta digitar locale no terminal


3. Re: Como fazer o programa trocar virgula por ponto

David Christenes Silva Ferrari de Mattos
Redfog

(usa Debian)

Enviado em 01/05/2017 - 04:18h

Vlw irmão, mas nesse caso ele funciona na saída certo?
E nos casos de entradas de dados?
Por exemplo, alguém digita 2,20 , porém o programa não vai aceitar esse valor e fechar...
Qual lib resolve isso, é essa locale mesmo?


4. Re: Como fazer o programa trocar virgula por ponto

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/05/2017 - 08:06h

Redfog escreveu:

Vlw irmão, mas nesse caso ele funciona na saída certo?
E nos casos de entradas de dados?
Por exemplo, alguém digita 2,20 , porém o programa não vai aceitar esse valor e fechar...
Qual lib resolve isso, é essa locale mesmo?


Deve funcionar na saída e na entrada, a não ser que a implementação de locales esteja incompleta.

E não, o programa não vai fechar. Funções como scanf() não interrompem o programa, mas tão somente sinalizam, por meio do valor de retorno da função -- que você sempre deveria testar e tratar --, o que aconteceu ao tentar ler os dados.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts