Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Acentuação de Palavra em C


finalbreak
 Share

Question

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

Edited by finalbreak
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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;
}
Edited by finalbreak
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...