Por que na hora do meu programa escrever o caractere 'ã' ele substitui por um caractere estranho?
Aqui o algoritmo em Linguagem C:
(Quero concatenar as palavras Pão e Mortadela para que a string seja impressa assim:
Pão mortadela
#include
#include
#include
int main(){
system("cls");
char palavra1[]={' P ' , ' ã ', ' o ' , ' '};
char palavra2 []={' m ' , ' o ' , ' r ' , ' t ' , ' a ' , ' d ' , ' e ' , ' l ' , ' a '};
char novapalavra[13];
int i=0,c=0,n;
for(n=0;n<=12;n++){
if(n<4){
novapalavra[n]=palavra1[i];
i++;
}
else{
novapalavra[n]=palavra2[c];
c++;
}
}
for(n=0;n<=12;n++)
printf("%c",novapalavra[n]);
}
Soluções para a tarefa
Resposta:
A linguagem C por padrão não possui suporte a ABNT2.
Explicação:
Você terá que usar a biblioteca necessária para poder utilizar os acentos em seu código, que no caso seria a locale.h.
Chamamos de “localizar” um programa quando fazemos a adaptação deste às características de uma determinado idioma ou de uma região.
A linguagem C utiliza o arquivo de cabeçalho locale.h para implementar a localização de programas.
Veremos dois exemplos para permitir suporte a língua portuguesa. A utilização do arquivo locale.h e da função setlocale() configurada adequadamente vai garantir que caracteres como “ç” e acentuação sejam exibidos normalmente em nosso programa.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h> //necessário para usar setlocale
int main(void)
{
printf("\n****** Verificando a localidade corrente ********\n\n");
printf ("Localidade corrente: %s\n", setlocale(LC_ALL,NULL) );
printf("Não é possível usar acentuação ou ç corretamente…\n\n");
printf("\n****** Alterando para a localidade do sistema ********\n\n");
//alterando para o padrão do sistema operacional
printf("A localidade corrente agora é %s \n",setlocale(LC_ALL,""));
printf("Agora não tem mais problema algum!\n");
printf("Já posso usar acentuação e também o caracter ç…\n\n\n");
system("pause");
return 0;
}
Também é possível configurar o idioma português da seguinte forma:
setlocale(LC_ALL, “Portuguese”);
Vejamos um segundo exemplo.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "Portuguese");
printf("Utilizando caracteres e acentuação da língua portuguesa!\n\n");
system("pause");
return 0;
}