Jump to content

Existe jeito de exibir o separador de milhar "." usando a função printf da linguagem C?


acbdev

Postagens Recomendadas

Olá! Quem puder me ajudar eu agradeço. Estou fazendo um programinha simples em linguagem C que retorna números bem grandes para o sistema operacional (no caso o antigo prompt do DOS, o CMD do Windows). Eu gostaria de exibir esses números com os milhares separados pelo ponto ex: 1.968.369.321. Tentei de todo jeito e não consegui. Pesquisei muito os códigos de formatação e a biblioteca locale.h mas não deu certo. O máximo que consegui foi mudar o sinal de decimal "." para "," conforme nos costumamos usar aqui no Brasil. Obrigado desde já!

Separar milhres.jpg

Link to comment
Compartilhe em outros sites

  • 4 weeks later...

Olá!

Para formatar os números grandes com pontos você pode tentar essa pequena solução abaixo

#include <stdio.h>
#include <string.h>

int main() {
    long int number = 1233968369321;
    char str[20];
    sprintf(str, "%ld", number);

    int length = strlen(str);
    for (int i = length - 3; i > 0; i -= 3) {
        // inserir um ponto a cada três dígitos, começando da direita para a esquerda
        memmove(str + i + 1, str + i, strlen(str + i) + 1);
        str[i] = '.';
    }

    printf("%s\n", str);
    return 0;
}

 

  • Curtir 2
Link to comment
Compartilhe em outros sites

  • 9 months later...

#include <stdio.h>
#include <string.h>

void formatarNumero(long long numero) {
    char buffer[30];  // Ajuste conforme necessário (espaço para armazenar o número convertido em string)
    snprintf(buffer, sizeof(buffer), "%lld", numero);  // Converte o número para uma string e a armazena em buffer

    int tamanho = strlen(buffer);  // Obtém o tamanho da string
    int pontoIndex = tamanho % 3;  // Calcula o índice onde o primeiro ponto será adicionado

    if (pontoIndex == 0) pontoIndex = 3;  // Se o índice for 0, ajusta para 3

    for (int i = 0; i < tamanho; ++i) {
        printf("%c", buffer[i]);  // Imprime o caractere atual da string

        pontoIndex--;
        if (pontoIndex == 0 && i != tamanho - 1) {
            printf(".");  // Adiciona um ponto a cada três caracteres, exceto no último
            pontoIndex = 3;  // Reinicia o índice para o próximo conjunto de três caracteres
        }
    }

    printf("\n");  // Imprime uma nova linha no final para melhor formatação
}

int main() {
    long long meuNumero = 1968369321;
    formatarNumero(meuNumero);  // Chama a função para formatar e imprimir o número

    return 0;
}
 

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...