Enviado em 05/03/2017 - 14:48h
Estou com um exercício que faço cadastro de caminhões,cidades,cargas através de uma lista, mas não estou conseguindo salvar em um arquivo (é a ultima função) quando eu seleciono a opção de salvar(#7), ele fecha o programa.#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
typedef struct caminhoes{
int id;
char motorista[200];
char marca[200];
char la[200];
char lisd[200];
float kml;
struct caminhoes *prox;
}lcam;
typedef struct cargas{
int id;
char produto[200];
char origem[200];
char destino[200];
float vfrete;
struct cargas *prox;
}lcar;
typedef struct cidades{
int id;
char nome[200];
char vizinhos[200];
char distancia[200];
float vc;
struct cidades *prox;
}lcid;
void cad_cam(lcam **cabeca);
void cad_car(lcar **carcabeca);
void cad_cid(lcid **cidcabeca);
void imp_cam(lcam *cabeca);
void imp_car(lcar *carcabeca);
void imp_cid(lcid *cidcabeca);
void salvacam(lcam **cabeca);
int main()
{
setlocale(LC_ALL, "Portuguese");
lcam *cabeca = NULL;
lcam *noatual;
lcar *carcabeca = NULL;
lcar *carnoatual;
lcid *cidcabeca = NULL;
lcid *cidnoatual;
int op;
printf("0 - Fechar \n");
printf("1 - Cadastrar Caminhão \n");
printf("2 - Cadastrar Carga \n");
printf("3 - Cadastrar Cidade \n");
printf("4 - Imprimir Caminhão\n" );
printf("5 - Imprimir Cargas\n");
printf("6 - Imprimir Cidades\n");
printf("7 - Salvar Caminhao em Arquivo \n");
printf("8 - Excluir Cargas \n");
printf("9 - Excluir Cidades \n");
printf("10 - Relatórios \n");
printf("Digite uma opcao: \n");
scanf("%d", &op);
while(op!=0){
switch(op){
case 0:{
op=0;
break;
}
break;
case 1: cad_cam(&cabeca);
break;
case 2: cad_car(&carcabeca);
break;
case 3: cad_cid(&cidcabeca);
break;
case 4: imp_cam(cabeca);
break;
case 5: imp_car(carcabeca);
break;
case 6:imp_cid(cidcabeca);
break;
case 7:salvacam(&cabeca);
break;
case 8:
break;
case 9:
break;
case 10:
break;
}
printf("0 - Fechar \n");
printf("1 - Cadastrar Caminhão \n");
printf("2 - Cadastrar Carga \n");
printf("3 - Cadastrar Cidade \n");
printf("4 - Imprimir Caminhão\n" );
printf("5 - Imprimir Cargas\n");
printf("6 - Imprimir Cidades\n");
printf("7 - Salvar Caminhao em Arquivo \n");
printf("8 - Excluir Cargas \n");
printf("9 - Excluir Cidades \n");
printf("10 - Relatórios \n");
printf("Digite uma opcao: \n");
scanf("%d", &op);
}
}
void cad_cam (lcam **cabeca)
{
setlocale(LC_ALL, "Portuguese");
lcam *noatual, *novono;
int id;
char mot[200];
char mar[200];
char loca[200];
char lisd[200];
float kml;
printf("ID:\n");
scanf("%d", &id);
setbuf(stdin, NULL);
printf("Motorista:\n");
scanf("%[^\n]s", &mot);
setbuf(stdin, NULL);
printf("Marca:\n");
scanf("%[^\n]s", &mar);
setbuf(stdin, NULL);
printf("Local Atual:\n");
scanf("%[^\n]s", &loca);
setbuf(stdin, NULL);
printf("Lista de Destinos:\n");
scanf("%[^\n]s", &lisd);
setbuf(stdin, NULL);
printf("KM/L:\n");
scanf("%f", &kml);
setbuf(stdin, NULL);
if (*cabeca == NULL)
{
*cabeca = malloc(sizeof(lcam));
(*cabeca)->id = id;
strcpy((*cabeca)->motorista, mot);
strcpy((*cabeca)->marca, mar);
strcpy((*cabeca)->la, loca);
strcpy((*cabeca)->lisd, lisd);
(*cabeca)->kml = kml;
(*cabeca)->prox = NULL;
}
else{
noatual = *cabeca;
while(noatual->prox != NULL)
noatual = noatual->prox;
novono = malloc(sizeof(lcam));
novono->id = id;
strcpy(novono->motorista, mot);
strcpy(novono->marca,mar);
strcpy(novono->la,loca);
strcpy(novono->lisd,lisd);
novono->kml = kml;
novono->prox = NULL;
noatual->prox = novono;
}
}
void cad_car (lcar **carcabeca)
{
setlocale(LC_ALL, "Portuguese");
lcar *carnoatual, *carnovono;
int id;
char prod[200];
char ori[200];
char dest[200];
float vf;
printf("ID:\n");
scanf("%d", &id);
setbuf(stdin, NULL);
printf("Produto:\n");
scanf("%[^\n]s", &prod);
setbuf(stdin, NULL);
printf("Origem:\n");
scanf("%[^\n]s", &ori);
setbuf(stdin, NULL);
printf("Destino:\n");
scanf("%[^\n]s", &dest);
setbuf(stdin, NULL);
printf("Valor do Frete:\nR$");
scanf("%f", &vf);
setbuf(stdin, NULL);
if (*carcabeca == NULL)
{
*carcabeca = malloc(sizeof(lcar));
(*carcabeca)->id = id;
strcpy((*carcabeca)->produto, prod);
strcpy((*carcabeca)->origem, ori);
strcpy((*carcabeca)->destino, dest);
(*carcabeca)->vfrete = vf;
(*carcabeca)->prox = NULL;
}
else{
carnoatual = *carcabeca;
while(carnoatual->prox != NULL)
carnoatual = carnoatual->prox;
carnovono = malloc(sizeof(lcar));
carnovono->id = id;
strcpy(carnovono->produto, prod);
strcpy(carnovono->origem,ori);
strcpy(carnovono->destino,dest);
carnovono->vfrete = vf;
carnovono->prox = NULL;
carnoatual->prox = carnovono;
}
}
void cad_cid (lcid **cidcabeca)
{
setlocale(LC_ALL, "Portuguese");
lcid *cidnoatual, *cidnovono;
int id;
char nome[200];
char viz[200];
char dist[200];
float vac;
printf("ID:\n");
scanf("%d", &id);
setbuf(stdin, NULL);
printf("Nome da Cidade:\n");
scanf("%[^\n]s", &nome);
setbuf(stdin, NULL);
printf("Digite o Valor do Combistível:\nR$");
scanf("%f", &vac);
setbuf(stdin, NULL);
if (*cidcabeca == NULL)
{
*cidcabeca = malloc(sizeof(lcid));
(*cidcabeca)->id = id;
strcpy((*cidcabeca)->nome, nome);
(*cidcabeca)->vc = vac;
(*cidcabeca)->prox = NULL;
}
else{
cidnoatual = *cidcabeca;
while(cidnoatual->prox != NULL)
cidnoatual = cidnoatual->prox;
cidnovono = malloc(sizeof(lcid));
cidnovono->id = id;
strcpy(cidnovono->nome, nome);
cidnovono->vc = vac;
cidnovono->prox = NULL;
cidnoatual->prox = cidnovono;
}
}
void imp_cam(lcam *noatual)
{
setlocale(LC_ALL, "Portuguese");
while( noatual != NULL)
{
printf("\nID:%d\n", noatual->id);
printf("Motorista:%s\n", noatual->motorista);
printf("Marca:%s\n", noatual->marca);
printf("Local Atual:%s\n", noatual->la);
printf("Lista de Destinos:%s\n", noatual->lisd);
printf("KM/L:%.2f\n", noatual->kml);
noatual = noatual->prox;
}
}
void imp_car(lcar *carnoatual)
{
setlocale(LC_ALL, "Portuguese");
while( carnoatual != NULL)
{
printf("\nID:%d\n", carnoatual->id);
printf("Produto:%s\n", carnoatual->produto);
printf("Origem:%s\n", carnoatual->origem);
printf("Destino:%s\n", carnoatual->destino);
printf("Valor do Frete:R$%.2f\n", carnoatual->vfrete);
carnoatual = carnoatual->prox;
}
}
void imp_cid(lcid *cidnoatual)
{
setlocale(LC_ALL, "Portuguese");
while( cidnoatual != NULL)
{
printf("\nID:%d\n", cidnoatual->id);
printf("Nome da Cidade:%s\n", cidnoatual->nome);
printf("Valor do Combustível:%.2f\n", cidnoatual->vc);
cidnoatual = cidnoatual->prox;
}
}
void salvacam(lcam **cabeca){
lcam *noatual;
FILE *arquivo;
arquivo = fopen("Caminhões.txt", "w");
if(arquivo = NULL){
printf("Erro na Abertura do Arquivo");
}
else{
if(noatual == NULL){
fprintf(arquivo,"Lista Vazia!\n");
}
else{
while(noatual != NULL){
fprintf(arquivo,"ID:%d\n", noatual->id);
fprintf(arquivo,"Motorista:%s\n", noatual->motorista);
fprintf(arquivo,"Marca:%s\n", noatual->marca);
fprintf(arquivo,"Local Atual:%s\n", noatual->la);
fprintf(arquivo,"Lista de Destinos:%s\n", noatual->lisd);
fprintf(arquivo,"Marca:%s\n", noatual->kml);
noatual = noatual->prox;
}
}
}
fclose(arquivo);
printf("Salvo com Sucesso!");
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Como abrir o pycharm no linux (2)
VMs e Interfaces de Rede desapareceram (12)