-1
I’m doing a job that uses struct
it’s all right but when it comes to listing the last one comes out with a strange character.
My code is like this
struct livro_cadastro{
int codigo;
char obra[30];
char autor[30];
char editora[30];
};
int main(){
int p, codigo2, i;
struct livro_cadastro livro[5];
p = 1;
codigo2 = 1;
while ( p != 0 ){
printf("\nMENU. \n\n"
"1 - Inserir um novo cadastro.\n"
"2 - Mostrar todos os cadastros.\n"
"0 - Encerrar.\n");
printf("\nEscolha sua opcao:");
scanf("%d", &p );
fflush(stdin);
switch (p){
case 1:
if (codigo2 <= 5){
printf("\nNovo cadastro.\n");
printf("Codigo:%d \n", codigo2);
printf("Insira o nome do livro: \n");
fgets(livro[codigo2].obra, 30, stdin);
fflush(stdin);
printf("Insira o nome do autor: \n");
fgets(livro[codigo2].autor, 30, stdin);
fflush(stdin);
printf("Insira o nome da editora: \n");
fgets(livro[codigo2].editora, 30, stdin);
fflush(stdin);
codigo2++;
}
else{
printf("\nSistema de cadastro lotado.\n");
}
break;
case 2:
if(codigo2 == 1){
printf("\nA lista esta vazia!\n");
}
else{
printf("\nCadastros.\n");
for(i = 1 ; i < codigo2 ; i++)
{
printf("\nCodigo:%d ", i);
printf("\n\nNome do livro: %s\n",livro[i].obra);
printf("Nome do autor: %s\n",livro[i].autor);
printf("Nome da editora: %s\n",livro[i].editora);
}
}
break;
case 0:
printf("Encerrando o programa.\n");
default:
printf("Opcao invalida!");
break;
// case 2:
// desempilhando();
// break;
//
// case 3:
// esvaziar_pilha();
// break;
}
}
return (0);
}
Did the answer solve your question? Do you think you can accept it? See [tour] if you don’t know how you do it. This would help a lot to indicate that the solution was useful for you. You can also vote on any question or answer you find useful on the entire site (when you have 15 points).
– Maniero