Ir ao conteúdo
  • Cadastre-se

C++ Eu posso usar o printf e scanf dentro do c++?


Posts recomendados

Toda função da linguagem C é possível usar na linguagem C++, porém se existir uma alternativa pra essa função na linguagem C++ prefira a função da linguagem C++, não se esqueça que você está programando em C++ e não em C.

 

Alguns motivos para usar sempre funções da linguagem C++ em vez da linguagem C:

 

1 - Melhor otimização do código:

Como é um compilador da linguagem C++ vai utilizar de uma forma melhor os recursos e otimização do compilador se o código for em C++ em vez de C, resultando uma melhor velocidade do código e da aplicação.

 

2 - Maior segurança:

Algumas funções da linguagem C não são seguras, por exemplo, no caso da strcpy:

char nome[10];

strcpy(nome, "Joao Ferreira"); // Está copiando um nome maior que o tamanho que foi reservado para o nome.

 

Se fosse em C++ o problema acima não iria acontecer porque a classe string possui alocação dinâmica, problemas como estouro de memória por exemplo, você não tem que se preocupar, deixa que a classe cuida da alocação de memória para você.

 

Em C++ ficaria bem seguro e até mais fácil de usar:

std::string nome;

// Podemos colocar o nome que for e com quantos caracteres sem se preocupar com problemas diferentemente da strcpy
nome = "Joao Ferreira";
nome = "Maria Ferreira Souza do Nascimento";

 

Outros exemplos de função que não é segura que foram até citadas por você é: printf e scanf

 

scanf por exemplo, é muito comum ter estouros de buffers em strings(char*, char[])

 

3 - Facilidade maior e melhor legibilidade do código:

A linguagem C++ existe varias classes e funções que não existe na linguagem C, você pode usar um índice de como string ou qualquer outro tipo, graças a classe map, exemplo:

std::map<std::string, int> idades;

idades["Joao"] = 20;
idades["Maria"] = 21;
idades["Larissa"] = 30;

 

Na linguagem C você sempre usa indices como inteiro ficando de uma forma bem limitada.

 

------

 

Como eu disse acima, a função printf não é segura, então por isso prefira sempre usar a cout em vez da printf e cin em vez de scanf.

 

Mas se você quiser usar o printf/scan de uma forma segura, existe varias bibliotecas postadas na internet contendo uma uma função de print/scanf muito mais segura que a do C.

 

Uma deles é a tiny format:

https://github.com/c42f/tinyformat

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Só para efeito de complementação do tópico, segue abaixo o trecho de um programa que fiz na faculdade em que eu utilizei o 'printf' para conseguir limitar os caracteres impressos no caso, em duas casas decimais, já que o mesmo se trata de um valor financeiro.

 system("cls");
              printf("TOTAL EM HAMBURGUERES   :%2.2f\n",tha);
              printf("TOTAL EM PORC.BAT.FRITAS:%2.2f\n",tbf);
              printf("TOTAL EM REFRIGERANTES  :%2.2f\n",tre);
              printf("TOTAL EM ESPEC. DA CASA :%2.2f\n",tec);
              printf("------------------------------\n");
              printf("TOTAL:                  :%2.2f\n",tt);

 

Não sei se utilizando o 'cout' isso é possível...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!