Summary
Keywords
Full Transcript
Cupons para meus cursos na Udemy https://wagnergaspar.com/cupons_udemy/ Bem vindo a aula 30 de nosso curso gratuito de programação com a linguagem C. Você já tentou imprimir o valor de uma variável do tipo char usando o %d no lugar de usar %c? Se você pensou que isso vai gerar algum erro, não, não vai. A verdade é que toda variável do tipo char também armazena um número. Como o tipo char ocupa apenas um byte de memória (8 bits), é possível armazenar valores no intervalo de -128 até 127. Logo, qualquer variável do tipo char, ao ser impressa na tela, se for utilizado o %c, será impresso um caractere, contudo, se for utilizado o %d, será impresso um número inteiro. Mas, por que isso acontece? Existe uma tabela chamada TABELA ASCII que é utilizada para fazer o mapeamento entre números e caracteres. Para cada número no intervalo entre 0 e 127 existe um caractere associado. Por exemplo: 9 é o caractere de tabulação \t. 10 é o caractere de nova linha \n (enter). 65 é a letra A maiúscula. 66 é a letra B maiúscula. 90 é a letra Z maiúscula. O alfabeto minúsculo está entre 97 (a) e 122 (z). Esta tabela possui exatamente 127 caracteres que corresponde ao intervalo de números positivos apresentado anteriormente para 1 byte de memória. É daí que vem o problema de acentuação. Não há nenhum tipo de acentuação nos caracteres desta tabela. Como resolver então o problema da acentuação na linguagem C? Vamos por partes. Como uma variável do tipo char guarda um número inteiro, significa que podemos utilizar o operador unsigned. Assim temos: char letra1; // intervalo de -128 a 127 unsigned char letra2; // intervalo de 0 a 255 Existe uma versão estendida da TABELA ASCII com caracteres representados pelos números de 0 a 255. Esta tabela possui a maior parte das acentuações utilizadas por diversas idiomas mundo afora, incluindo o português brasileiro. É esta tabela que precisamos utilizar, mas, como fazer isso? Simples. Primeiro precisamos incluir esta linha de código abaixo dos includes que já temos: #include locale.h Observação: não esqueça os sinais de maior e menor envolvendo a palavra locale.h, como mostrado no vídeo. Por algum motivo não é permitido tais sinais aqui na descrição. Aqui nós estamos fazendo a inclusão de um arquivo de interface. Não se preocupe tanto em entender essa linha agora, mais a frente isso ficará mais claro. Dentro da função main precisamos escrever a seguinte função: setlocale(); Esta função pode ser utilizada de três formas: 1ª = setlocale(LC_ALL, NULL);// padrão da linguagem C 2ª = setlocale(LC_ALL, "");// padrão do sistema operacional 3ª = setlocale(LC_ALL, "Portuguese");// português brasileiro A primeira forma nós já conhecemos. Por padrão a linguagem C utiliza a TABELA ASCII resumida, com caracteres de 0 a 127, sem acentuação. A segunda forma utiliza a codificação adotada pelo sistema operacional da máquina do usuário. Assim, se o sistema operacional estiver em português, perfeito, irá funcionar. Contudo, muitos usuários utilizam o sistema operacional em inglês, neste caso o problema com acentuação permanecerá. A terceira forma é a mais recomendada. Ela garante a utilização da TABELA ASCII ESTENDIDA com acentuação independente do sistema operacional utilizado. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_PARA OS INICIANTES_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ A IDE Code Blocks é minha queridinha para programar em C e sempre será utilizada nas aulas. Assim, se você não a conhece ou tem dúvidas de onde baixar e como instalar, eu preparei uma série de videoaulas falando apenas sobre recursos desta IDE, inclusive onde baixar e como instalar. Confira aqui: https://www.youtube.com/watch?v=8O3pjt8hd_A&list=PLqJK4Oyr5WSi0szCtvUSlvHhjnctAv9oG Código disponível em: https://wagnergaspar.com/
