Seguinte galera. Sou novo no fórum. Curso engenharia mecânica, não manjo muito de programação. Porém tenho uma cadeira obrigatória de C. Tinha feito já uma cadeira de C++ em uma outra universidade, mas quando transferi de instituição não me deixaram aproveitá-la .
Tenho uma tarefa onde devo criar um struct para cadastrar algumas características para 10 livros. Porém o cadastro deve ser feito através de uma segunda função, externa a main. Para isso estou tentando repassar o meu struct através de ponteiros para essa função. É aí que estou tendo o problema. O erro ocorre no case 1. Já tentei pesquisar, mas como não conheço nem sites bons relacionados ao assunto não encontrei nada que me solucionasse o problema. Também testei várias possibilidades. Caso alguém tenha uma sugestão de uma abordagem diferente, anexei o exercício (é o primeiro do arquivo).O código não está completo, mas é o suficiente para entender o que estou tentando fazer. Devem haver mais erros em relação aos ponteiros, pois ainda não entendi corretamente o seu funcionamento, se puderem indicá-los ficaria grato. Toda crítica é bem-vinda. Obrigado pela atenção!
Segue abaixo o que consegui elaborar do código até o momento:
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>
#include<string.h>
struct descricao
{char titulo [16];
char autor [21];
char estilo [11];
int codigo;
float preco;};
void cadastro (struct descricao*livro,int *k)
{
printf("Esse é o cadastro de número %d.\n",k);
printf("Digite o título do livro (até 15 caracteres):");
scanf("%s",&livro->titulo);
printf("Digite o autor do livro(até 20 caracteres):");
scanf("%s",&livro->autor);
printf("Digite o estilo do livro (até 10 caracteres):");
scanf("%s",&livro->estilo);
printf("Digite o código do livro:");
scanf("%d",&livro->codigo);
printf("Digite o preço do livro:");
scanf("%f",&livro->preco);
(*k)=(*k)+1;
}
int main( )
{
setlocale(LC_ALL, "Portuguese");
int k=0;
int i;
typedef struct descricao livro [10];
printf("--------------MENU DE OPÇÕES--------------\n");
printf("1-Cadastro de livros (máximo de 10 livros).\n");
printf("2-Consulta de livros.\n");
printf("3-Sair do programa.\n");
scanf("%d",&i);
system("cls");
switch (i)
{
case 1:
cadastro(&livro[k],&k);
case 2:
case 3:
default:
printf ("Número inválido!\n");
system ("PAUSE");
system ("cls");
break;
}
}
13.3 - Ep 13.pdf