Formatar strings em C (RG, telefone, CEP etc)

Publicado por Eduardo (última atualização em 15/10/2009)

[ Hits: 16.513 ]

Download Mascara para string.cpp




Função em C para "formatar" suas strings antes de gravá-las em algum lugar ou simplesmente mostrar na tela. Está função é necessária quando você quer formatar um RG, telefone, CEP etc.

Ex.: O usuário entra com o RG 123456789. Vamos supor que antes de gravar no banco ou no arquivo você queira colocar traços e pontos. Você faria isso:

char RG[] = "123456789";
mascara(RG, "##.###.###-#");

Neste caso terá como saída o seguinte: 12.345.678-9

Obs: Meu objetivo com esse script é somente exemplificar a possibilidade de usar essa função, o aconselhável seria retornar um ponteiro para o programa principal e tal... Enfim, usem a imaginação, melhorem e/ou adaptem esse script da forma que acharem melhor!

Abraços.

  



Esconder código-fonte

#include<stdio.h>
#include<conio2.h> //compilei no dev C++ (Windows), mas aqui basta colocar uma biblioteca equivalente... conio ou ncurses
#include<string.h>

/****** PROTOTIPACÃO ******/
void mascara(char *frase, char formato[]);

/********* Prog principal **********/
int main()
{
    char frase[] = "1112345678";  // string qualquer
    mascara(frase,"(##) ####-####");
}

/********* Funcão **********/
void mascara(char *frase, char formato[])
{
     char aux[100];
     int i = 0;
     
     while(*frase)
     {
        if(formato[i] != '#')
        {
           aux[i] = formato[i];
           i++;
        }
        else
        {
           aux[i] = *frase;
           frase++;
           i++;
        }
     }
     aux[i] = 0;

     printf("%s",aux);
     getch();
}

Scripts recomendados

[C] Equação do 2° Grau

Usando regex com linguagem C

Lista Encadeada com Ordenação

Qual a idade de Jacinto?

Programa para escola


  

Comentários
[1] Comentário enviado por wantuiliv em 29/10/2015 - 09:28h

Muito obrigado, o código funcionou perfeito.

Fiz um para o Genexus, baseado em sua lógica.

&count= 1
&countString= 1

do while &mascara.Length() >= &count
if &mascara.Substring(&count, 1) <> '#'
&palavaFormatada+= &mascara.Substring(&count, 1)
else
&palavaFormatada+= &palavra.Substring(&countString, 1)
&countString+= 1
endif
&count+= 1
enddo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts