Tenho um problema com o executável programado em C. Quando o programa atinge uma determinada parte do código ele simplesmente para de funcionar (o windows pede para depurar o arquivo). Não sei o que fazer.
Vamos lá ajudar você a resolver o problema, e entender o que está acontecendo no seu código.
No trecho: char *com;
Substitua por: char com[80];
Por que isso?
Bom, inicialmente você declarou um um ponteiro tipo char e este ponteiro esta apontando para um endereço de memória aleatório no seu computador. E você está tentando gravar nesse endereço aleatório. Explicando assim o travamento do programa.
Porém existe outro erro no seu programa: Quando você chama a função cadastrar(); o programa cria uma estrutura de dados tipo carro e atribui dados a ela, até nesta parte está ok.
Logo abaixo você chama a função exibir(); Nesta tem um problema. Você está declarando novamente a estrutura carro e esta tentando acessar dados que não estão carregados nela.
A struct declarada na função cadastrar(); é diferente da struct declarada na função exibir();
Se você quer acessar os dados da struct declarada na função cadastrar(); Ou você define ela como global (oque eu não recomendo) ou passe ela por referência na função.
Olá, eu sou nova no fórum e sou iniciante em C e C++ meu nível de conhecimento é acadêmico e você citou algo que me intrigou bastante e gerou um nó no meu pensamento. Não entendo de ponteiros mas até onde eu aprendi (char *com) declara uma string então na minha cabeça era para funcionar e testando o código postando com sua sugestão funcionou e gerou esse nó na minha cabeça. E porque você não recomenda variáveis globais?
Geralmente é considerado boa prática escrever código de maneira funcional, isto é, com funções em que a saída é determinada apenas pelos parâmetros de entrada, ao invés de depender de estado global.