• Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
fenixpan

Erro no comando setlocale

19 posts neste tópico

Olá pessoal,

Estou tendo problemas no meu código quando eu utilizo o comando setlocale:

#include <locale.h>
#include <iostream>

int main() {
    setlocale(LC_ALL, "Portuguese");

Escrevendo um pequeno texto no programa, eu notei que alguns acentos aparecem normalmente e outros não. No lugar dos acentos apareceram uns símbolos estranhos. Eu utilizo o DEV C++ e de acordo com sites que andei pesquisando, esse programa tem um compilador antigo e que talvez o problema desses meus acentos possa ser isso. Porém, eu vi que o Code::Blocks tem o mesmo compilador do DEV C++. Então gostaria de saber o que fazer para resolver esse meu problema.

 

Grato desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

#2   Postado (editado)

Mesmo sendo o mesmo compilador, o Code::blocks tem uma versão superior ao DevC++, pois esse ultimo não é atualizado a anos, e é distribuido com um compilador 'instavel'. Ja o CB, possui versões corrigidas do compilador.

Versão corrigida do compilador: https://sourceforge.net/projects/orwelldevcpp/files/Compilers/MinGW/

Editado por TYSQUARE89

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prove setlocale(LC_ALL, "portuguese-brazilian"); e nos diga aqui se funcionou seu programa.

Primeiro vamos esclarecer qual a versão do devc++ você tem. Se não me engano o dev c++ que funciona em windows 7 adiante é o devc++ ORWELL que é justo a que lhe recomenda @TYSQUARE89. 3bb177871abd4007b326558675da22cc.png

A ultima versão deste programa nesta pagina vem com MinGW 4.8.1.7z, realmente não está mal. Ja ultima versão do compilador do codeblocks oficial vem com TDM-GCC (version 4.9.2, 32 bit, SJLJ) que é algo mais atual porém também não é a ultima versão do compilador atualmente.
Se quiser as ultimas versões do compilador você terá de baixar manualmente e integrar-lhe ao seu IDE. Eu por exemplo uso essa versão aqui, que é a 6.2, porém como falei, descarrego ela separadamente do IDE. Atualmente uso codeblocks junto com MinGW-W64 6.2.0. Codeblocks tem uma versão que você pode baixar sem compilador e lhe permite você o integrar com outros compiladores mais atuais. Em realidade, não vejo necessidade de você passar pelo mesmo processo que eu faço, pois o processo de integração de um compilador com o IDE é algo relativamente complicado se não tiver ideia do que esta fazendo. Usando o compilador que vem com as ultimas versões de codeblocks ou devc++Orwell é mais que suficiente para a maioria, e se não todos os programas que você quer compilar, a diferença pode estar em coisas como fix de bugs importantes ou não tanto, suporte ao um novo padrão da linguagem, como c++17, etc, mas porém os padrões c++11, c++14 e mais antigos são os mesmos e n4ao mudaram. Poucas pessoas fazem uso do ultimo padrão da linguagem atualmente, quando eles(Os criadores dos IDEs) acharem pertinente, certamente incluirão uma versão do compilador mais atualizada e por isso você não precisa esquentar a cabeça. Procure saber a diferença que tem entre uma versão e outra do compilador que você esta usando e assim determinar se necessita ou não a ultima versão de um compilador.

A diferença entre mingw 4.9 e 6.3 esta entre o fix de erros, inclusão de novas funcionalidades, e a inclusão do padrão c++17 na versão 6. Por outro lado a versão 4 tem suporte para c++11 e experimentalmente para c++14. isso é o que diz aqui:
https://gcc.gnu.org/gcc-4.9/changes.html
https://gcc.gnu.org/gcc-6/changes.html

 

Na sua pagina oficial você pode ver todos os padroes https://gcc.gnu.org/. Por exemplo o ultimo padrão que estão trabalhando é o 7.1 que tem suas diferenças esclarecidas em
https://gcc.gnu.org/gcc-7/changes.html

 

Necessitas uma versão moderna? >_< Prove primeiro com o comando setlocale(LC_ALL, "portuguese-brazilian"), pode que funcione. ;)

adicionado 3 minutos depois

Ja estão trabalhando atualmente na versão 8. Se é que não da tempo por uma, e ja tem outra. Não esquente a cabeça com isso, se você estiver estudando procure saber o padrão que você está aprendendo primeiro para saber se precisa buscar um compilador mais atualizado. Levo anos programando e apenas faço uso do padrão c++11. >_<

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp  Eu integrei o compilador TDM-GCC-64 no DevC++, mudei o setlocale para esse que você me passou, mas mesmo assim continua dando erro, alguns caracteres aparecem normais e outros com símbolos estranhos

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar apenas: 
    setlocale(LC_ALL, "");

Isso faz com que o locale use a linguagem atual do S.O

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ver, vamos passar a ação...
Clint1.jpg

 

Antes de ficar supondo coisas, e buscar "soluções inúteis", mande-me o seu código, e escreva exatamente o que você está esperando que seu programa faça. Capturas de tela, fragmentos de códigos, referencias a paginas que tiver, qualquer coisa.
Muitas vezes você acha que pode fazer uma coisa e está limitado por algum problema "invisível".
Mande uma foto do seu teclado se puder, idioma usado no sistema operativo etc etc.

Vamos ver se resolvemos ou não. Não instale nada mais no seu computador, primeiro vamos ver do que se trata. Aguardo resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#8   Postado (editado)

@TYSQUARE89 Quando eu coloquei setlocale dessa forma, todas as letras com acento ficaram com uns símbolos estranhos. Antes, com o (LC_ALL, "Portuguese"), apenas o Á , õ e ã ficaram com uns símbolos estranhos. Eu até tentei usar esse comando com %c no lugar no acento, usando a tabela ASCII:

printf(" *SISTEMA DE C%cLCULO DE CRÉDITOS", 193); 

Porém, fica com o mesmo símbolo se eu digitasse "Á" no lugar de "%c"

 

@vangodp Eu fiz um teste com acentos no programa:

printf(" Á À Ã Â É Ê Í Ì Ó Ò Õ Ô Ú Ù á à ã â é ê í ì ó ò õ ô ú ù");

Porém apareceu esses caracteres:

Erro.png

 

Eu estou usando o DevC++ 4.9.9.2, com o compilador TDM-GCC-64, meu teclado é em Português e estou usando o Windows 7 Home Premium também em português

Editado por fenixpan

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usa Windows 7 Home Premium x32? Pois seu compilador é x64, não sei se interfere em char. Mas com certeza pode dar algum problema.

Como o @vangodp disse, antes de executar soluções drásticas, vamos as mais obvias, já tentou verificar se seu console está em UTF-8(ASCII não possui acentos)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@TYSQUARE89 Meu computador é x64, esqueci de mencionar isso.

Desculpe a pergunta, mas como eu verifico se o meu console está em UTF-8?

E sobre o ASCII, eu pensei que a versão estendida dela tivesse acentos.

 

Grato desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que seja melhor instalar um editor mais avançado/atualizado, como o code::blocks. Pra verificar é preciso ir no regedit, mas não lembro o caminho certo. La é possível ativar UTF-8, assim é adicionado mais símbolos. Sim a versão extendida contém acentos, mas se não usar locale.h ou %c, 160... não é possível visualizar eles. Se você ir no cmd, você consegue digitar acentos, etc..?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@TYSQUARE89Nossa... Eu fui verificar no cmd, e percebi que tem alguns acentos que não aparecem, e outros aparecem normalmente. Mas eu lembro dele mostrar todos os acentos certinhos... Que estranho.

 

O que será que pode ter acontecido? Certeza que isso está relacionado com o programa

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu teclado está com problema? Está usando pt-BR mesmo? 

Para verificar a linguagem que o locale está usando, tente:

printf("%s\n", setlocale(LC_ALL,""));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho mais resoluções, se você já verificou o teclado, código, compilador, etc., acredito que seja melhor reinstalar o DevC++ ou usar Atom, Code::Blocks ou Falcon C++.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@TYSQUARE89 Bom, Muito Obrigado mesmo! Você me ajudou demais com isso.

O que eu vou fazer é mudar a fonte do prompt de comando mesmo, porque com outra fonte mostra todos os acentos. É o que me resta kkkk

 

Muito obrigado

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

91eb525310444e73a6ea4ea247d2c0b3.png

Tenho como fonte a consolas.

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que funcione você tem que usar uma fonte true type. você pode identificar as fontes true type da seguinte forma:
Screenshot_1.jpg.d20234059efc2986479db965f4ddc885.jpg

Qualquer dessas funciona perfeitamente. você pode até buscar alguma personalizada para programação. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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