Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Acentuação de Palavra em C


finalbreak

Pergunta

Bom dia, amigos! Estou desenvolvendo um programa em C que cadastra os dados de um aluno, a nota e por aí vai. Eu queria saber como faço para um nome acentuado ser mostrado corretamente na tela, pois usei a biblioteca <locale.h> para definir português como padrão, mas ainda sim o caractere acentuado não é mostrado, isso acontece quando tento mostrar a lista de alunos já cadastrados, e caso algum nome possua acento, bem, o erro acontece.

igls1y.jpg

Editado por finalbreak
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

#include <stdio.h>
#include <locale.h>

int main(){
  setlocale(LC_ALL,""); 
  printf("joão\nJosé\n");
  
  getchar();
  return 0;
}

Então, o erro é quando informo ao programa para imprimir na tela os nomes que já foram cadastrados, daí se houver algum nome acentuado dá erro no caractere. Dá certo se o nome com acento estiver no printf, mas se estiver guardado em um vetor de n posições acontece o erro ao imprimi-lo.

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>



Se possível posta o código do programa para facilitar.

O código que fiz é maior, mas resumi ele pra mostrar a parte que está dando erro. Se você executar, cadastrar o nome acentuado e tal, e logo depois pedir para ele mostrar o nome cadastrado, ele vai mostrar com erro:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
int menu();
struct cadastroa{
char nome[50];
char sexo[10];
int idade;
};
int main(){
int e;
int i = 0;
int j = 0;
setlocale(LC_ALL,"portuguese");
struct cadastroa dados[30];
do{
printf("1 - Fazer cadastro de novo aluno\n");
printf("2 - Mostrar alunos cadastrados..\n");
printf("3 - Sair........................\n");
printf("Opção: ");
scanf("%i", &e);
switch(e){
case 1:{
printf("Informe o nome completo do aluno: ");
fflush(stdin);
gets(dados.nome);
printf("Informe o sexo do aluno: ");
fflush(stdin);
gets(dados.sexo);
printf("Informe a idade do aluno: ");
scanf("%i", &dados.idade);
i++;
j++;
break;
}
case 2:{
for(i = 0; i < j; i++){
printf("Aluno %i: %s\n", i + 1, dados.nome);
}
system("pause");
break;
}
}
} while(e != 3);
system("pause");
return 0;
}
Editado por finalbreak
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta desta forma e posta o resultado.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
 
int menu();
 
struct cadastroa{
char nome[50];
char sexo[10];
int  idade;
};
 
int main(){
int e;
int i = 0;
int j = 0;
setlocale(LC_ALL," ");
struct cadastroa dados[60];
do{
printf("1 - Fazer cadastro de novo aluno\n");
printf("2 - Mostrar alunos cadastrados..\n");
printf("3 - Sair........................\n");
printf("Opção: ");
scanf("%i", &e);
switch(e){
case 1:{

printf("Informe o nome completo do aluno: ");
scanf("%s", dados[i].nome);

while (getchar() != '\n');//Pegando todos caracteres do buffer, chegando no '\n'(enter) ele descarta o '\n' e sai do loop

printf("Informe o sexo do aluno: ");
scanf("%s", dados[i].sexo);

while (getchar() != '\n');

printf("Informe a idade do aluno: ");
scanf("%i", &dados[i].idade);

while (getchar() != '\n');

i++;
j++;
break;
}
case 2:{
for(i = 0; i < j; i++){
printf("Aluno %i: %s\n", i + 1, dados[i].nome);
}
system("pause");
break;
}
}
} while(e != 3);
system("pause");
return 0;
}

Att

Barão.

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Tenta desta forma e posta o resultado.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
 
int menu();
 
struct cadastroa{
char nome[50];
char sexo[10];
int  idade;
};
 
int main(){
int e;
int i = 0;
int j = 0;
setlocale(LC_ALL," ");
struct cadastroa dados[60];
do{
printf("1 - Fazer cadastro de novo aluno\n");
printf("2 - Mostrar alunos cadastrados..\n");
printf("3 - Sair........................\n");
printf("Opção: ");
scanf("%i", &e);
switch(e){
case 1:{

printf("Informe o nome completo do aluno: ");
scanf("%s", dados[i].nome);

while (getchar() != '\n');//Pegando todos caracteres do buffer, chegando no '\n'(enter) ele descarta o '\n' e sai do loop

printf("Informe o sexo do aluno: ");
scanf("%s", dados[i].sexo);

while (getchar() != '\n');

printf("Informe a idade do aluno: ");
scanf("%i", &dados[i].idade);

while (getchar() != '\n');

i++;
j++;
break;
}
case 2:{
for(i = 0; i < j; i++){
printf("Aluno %i: %s\n", i + 1, dados[i].nome);
}
system("pause");
break;
}
}
} while(e != 3);
system("pause");
return 0;
}

Att

Barão.

Opa, funcionou aqui. Muito obrigado pela ajuda! :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...