Ajuda em projeto de C
09/11/2019
0
Olá, Estou realizando um trabalho da faculdade onde tenho que fazer um controle de veículos, porem coo ainda n estudamos banco de dados o professor pediu que fosse armazenado os dados utilizando txt, fui desenvolvendo minha aplicação e pensei em uma forma de carregar esses dados para a memoria assim que for iniciado o programa para que possa ser realizado as buscas utilizando vetores, até onde fiz o codigo compilei para testar e n teve erros, porem quando rodo o programa ele para de responder, gostaria de alguma ajuda. Desde já agradeço.
segue o codigo:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define TAMVET 20
typedef struct{
char modelo[200];
char marca[200];
char placa[7];
int ano;
int chassi;
char cor[20];
char nome_proprietario[250];
int cpf_proprietario;
int telefone_proprietario;
}veiculo;
void menu();
void grava_dados_int(int dado);
void grava_dados_char(char dado[200]);
void carregar_dados ();
FILE *database;
veiculo dados_txt [TAMVET]; // variavel para carregar os dados do arquivo txt
char teste_fim_arquivo [TAMVET];
int main(){
veiculo veiculo;
int op; //variavel de leitura das opções escolhidas nos menus!
carregar_dados ();
//for (int i=0;i<4;i++){
// printf("%d\n",dados_txt[i].ano);
//}
system("pause");
menu();
scanf("%d",&op);
switch (op){
case 1:
system("cls");
printf("-------------------------------------------------------\n\n");
printf(" DADOS DO VEICULO \n\n");
printf("-------------------------------------------------------\n\n");
printf(" MODELO: ");
setbuf(stdin,NULL);
fgets(veiculo.modelo,200,stdin);
grava_dados_char(veiculo.modelo);
printf("\n MARCA: ");
fgets(veiculo.marca,200,stdin);
grava_dados_char(veiculo.marca);
printf("\n COR: ");
fgets(veiculo.cor,200,stdin);
grava_dados_char(veiculo.cor);
printf("\n PLACA: ");
fgets(veiculo.placa,200,stdin);
grava_dados_char (veiculo.placa);
printf("\n ANO DE FABRICAÇÃO: ");
scanf("%d",&veiculo.ano);
grava_dados_int (veiculo.ano);
printf("\n CHASSI: ");
scanf("%d",&veiculo.chassi);
grava_dados_int (veiculo.chassi);
system("cls");
printf("-------------------------------------------------------\n\n");
printf(" DADOS DO PROPRIETÁRIO \n\n");
printf("-------------------------------------------------------\n\n");
printf(" NOME: ");
setbuf(stdin,NULL);
fgets(veiculo.nome_proprietario,250,stdin);
grava_dados_char (veiculo.nome_proprietario);
printf("\n CPF: ");
scanf("%d",&veiculo.cpf_proprietario);
grava_dados_int (veiculo.cpf_proprietario);
printf("\n TELEFONE: ");
scanf("%d",&veiculo.telefone_proprietario);
grava_dados_int (veiculo.telefone_proprietario);
break;
} // fim switch menu principal
} // fim fo main
void carregar_dados (){
database = fopen("database.txt","r");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!\n");
for ( int i = 0; i < TAMVET; i++ ){
if ( fscanf(database,"%s",teste_fim_arquivo) == EOF) break;
fgets(dados_txt[i].modelo,TAMVET,database);
fgets(dados_txt[i].marca,TAMVET,database);
fgets(dados_txt[i].cor,TAMVET,database);
fgets(dados_txt[i].placa,TAMVET,database);
fscanf(database,"%d",dados_txt[i].ano);
fscanf(database,"%d",dados_txt[i].chassi);
fgets(dados_txt[i].nome_proprietario,TAMVET,database);
fscanf(database,"%d",dados_txt[i].cpf_proprietario);
fscanf(database,"%d",dados_txt[i].telefone_proprietario);
}
}
void grava_dados_char (char dado[200]){
database = fopen("database.txt","a");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!\n");
fprintf(database,"%s",dado);
fclose(database);
}
void grava_dados_int (int dado){
database = fopen("database.txt","a");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!/n");
fprintf(database,"%d\n",dado);
fclose(database);
}
void menu(){
printf("-------------------------------------------------------\n\n");
printf(" GESTÃO DE VEICULOS \n\n");
printf("-------------------------------------------------------\n\n");
printf(" 1 - CADASTRAR \n 2 - ALTERAR \n 3 - CONSULTAR \n 4 - EXCLUIR \n 5 - GERAR RELATÓRIOS \n 6 - SAIR \n\n");
printf("-------------------------------------------------------\n\n");
}
segue o codigo:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define TAMVET 20
typedef struct{
char modelo[200];
char marca[200];
char placa[7];
int ano;
int chassi;
char cor[20];
char nome_proprietario[250];
int cpf_proprietario;
int telefone_proprietario;
}veiculo;
void menu();
void grava_dados_int(int dado);
void grava_dados_char(char dado[200]);
void carregar_dados ();
FILE *database;
veiculo dados_txt [TAMVET]; // variavel para carregar os dados do arquivo txt
char teste_fim_arquivo [TAMVET];
int main(){
veiculo veiculo;
int op; //variavel de leitura das opções escolhidas nos menus!
carregar_dados ();
//for (int i=0;i<4;i++){
// printf("%d\n",dados_txt[i].ano);
//}
system("pause");
menu();
scanf("%d",&op);
switch (op){
case 1:
system("cls");
printf("-------------------------------------------------------\n\n");
printf(" DADOS DO VEICULO \n\n");
printf("-------------------------------------------------------\n\n");
printf(" MODELO: ");
setbuf(stdin,NULL);
fgets(veiculo.modelo,200,stdin);
grava_dados_char(veiculo.modelo);
printf("\n MARCA: ");
fgets(veiculo.marca,200,stdin);
grava_dados_char(veiculo.marca);
printf("\n COR: ");
fgets(veiculo.cor,200,stdin);
grava_dados_char(veiculo.cor);
printf("\n PLACA: ");
fgets(veiculo.placa,200,stdin);
grava_dados_char (veiculo.placa);
printf("\n ANO DE FABRICAÇÃO: ");
scanf("%d",&veiculo.ano);
grava_dados_int (veiculo.ano);
printf("\n CHASSI: ");
scanf("%d",&veiculo.chassi);
grava_dados_int (veiculo.chassi);
system("cls");
printf("-------------------------------------------------------\n\n");
printf(" DADOS DO PROPRIETÁRIO \n\n");
printf("-------------------------------------------------------\n\n");
printf(" NOME: ");
setbuf(stdin,NULL);
fgets(veiculo.nome_proprietario,250,stdin);
grava_dados_char (veiculo.nome_proprietario);
printf("\n CPF: ");
scanf("%d",&veiculo.cpf_proprietario);
grava_dados_int (veiculo.cpf_proprietario);
printf("\n TELEFONE: ");
scanf("%d",&veiculo.telefone_proprietario);
grava_dados_int (veiculo.telefone_proprietario);
break;
} // fim switch menu principal
} // fim fo main
void carregar_dados (){
database = fopen("database.txt","r");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!\n");
for ( int i = 0; i < TAMVET; i++ ){
if ( fscanf(database,"%s",teste_fim_arquivo) == EOF) break;
fgets(dados_txt[i].modelo,TAMVET,database);
fgets(dados_txt[i].marca,TAMVET,database);
fgets(dados_txt[i].cor,TAMVET,database);
fgets(dados_txt[i].placa,TAMVET,database);
fscanf(database,"%d",dados_txt[i].ano);
fscanf(database,"%d",dados_txt[i].chassi);
fgets(dados_txt[i].nome_proprietario,TAMVET,database);
fscanf(database,"%d",dados_txt[i].cpf_proprietario);
fscanf(database,"%d",dados_txt[i].telefone_proprietario);
}
}
void grava_dados_char (char dado[200]){
database = fopen("database.txt","a");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!\n");
fprintf(database,"%s",dado);
fclose(database);
}
void grava_dados_int (int dado){
database = fopen("database.txt","a");
if ( database == NULL ) printf ("Erro ao acessar o arquivo dos dados!!/n");
fprintf(database,"%d\n",dado);
fclose(database);
}
void menu(){
printf("-------------------------------------------------------\n\n");
printf(" GESTÃO DE VEICULOS \n\n");
printf("-------------------------------------------------------\n\n");
printf(" 1 - CADASTRAR \n 2 - ALTERAR \n 3 - CONSULTAR \n 4 - EXCLUIR \n 5 - GERAR RELATÓRIOS \n 6 - SAIR \n\n");
printf("-------------------------------------------------------\n\n");
}
Heber Magno
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)