Estouro de buffer
Olá a todos. estou com um problema num programinha que estou fazendo. Rodando o menu, na parte: Incluir > dados pessoais, o fgets não está funcionando. Testei a função sozinha e deu certo. Segue o código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct aluno
{
char nome[15];
char codigo[4];
int nota[3];
};
struct aluno cadastro;
int menu() //menu do programa
{
int esc;
printf("\2 PROGRAMA DE CADASTRO DE ALUNOS \2\n");
printf("Digite a opção que deseja:\n1.Incluir\n2.calcular nota\n3.Limpar a tela\n4.sair\n");
scanf("%d",&esc);
switch(esc)
{
case 1:
incluir();
menu();
case 2:
//mostrar();
//menu();
case 3:
system("cls");
menu();
case 4:
exit(0);
break;
default:
printf("Opcao invalida\n");
}
}///////////////////////////
int incluir() //
{
int esc;
printf("Digte o que deseja cadastrar\n1.dados pessoais\n2.Notas\n3.Voltar\n");
scanf("%d",&esc);
switch(esc)
{
case 1:
incluir_nome();
system("cls");
incluir();
case 2:
incluir_nota();
system("cls");
menu();
case 3:
system("cls");
menu();
case 4:
calc();
default:
printf("opcao invalida\n");
}
}
int incluir_nome()
{
printf("Digite o nome\n");
fgets(cadastro.nome,15,stdin);
}
int incluir_nota()
{
int i;
char cnome[15];
printf("Digite seu nome\n");
fgets(cnome,14,stdin);
if(strcmp(cnome,cadastro.nome))
{
for(i=1;i<4;i++)
{
printf("Digite a %d nota\n",i);
scanf("%d",&cadastro.nota[i]);
}
}
else
{
printf("Nome nao cadastrado.\n");
incluir();
}
}
int calc() //Função para calcular
{
int i,media=0;
for(i=1;i<4;i++)
{
media+=cadastro.nota[i];
}
media=media/3;
media=calc();
printf("%s, sua media foi %d",cadastro.nome,media);
printf("\n\n");
}
int main()
{
menu();
system("pause");
}Obrigado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Discussão (5)
Carregando comentários...