Ir ao conteúdo
  • Cadastre-se

rob.pormann

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

Tudo que rob.pormann postou

  1. Gente, não tem como responder se ao menos é possível fazer isso?
  2. Bom dia! Gostaria de saber se é possível alterar uma linha específica de um arquivo. Eu preciso fazer um controle de estoque para um trabalho e no final da linha coloquei a letra D para especificar os carros disponíveis, quando selecionado, pego a linha e faço uma concatenação com a letra A de alugado. No entando, o que eu gostaria de fazer é trocar a linha que estava com final D pela linha que agora está com final A mas não consigo fazer isso. A linha é sempre salva no final do arquivo e a linha que eu havia selecionado continua lá com a letra D. Alguém sabe se é possível fazer isso? Trocar uma linha pela outra? Segue o código e em anexo um arquivo txt com os carros cadastrados, caso vocês queiram testar. // Declaração de livrarias da plataforma. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> // Declaração das váriaveis do tipo: número, caractere e arquivo de texto. char opcao, nome[150], rg[20], cpf[20], CNH[20], opclista, datanasc[20], alugado[20] = "ALUGADO", A[2] = "A"; char txt[100] = ".txt", telefone[10], status[20], Categoria[20], pLc[7]; char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], opp, modelo[15], km[15], anocarro[4], categoria[20]; char opcidade, opcong, opcCategoria, cpfpagamento[20], ticket [10000]; FILE *RegistroLocacao,*RegistroCarro, *ListaCarros, *RegistroRelat; char dateStr[9], timeStr[9], linhacarro [100], registrocarro [100], opcentrega, opcrelat, opcprin, telaprin, devolucao[20]; char localrelat [1000] = "C:\\Users\\Public\\Documents\\Locacoes_.txt"; char localc[1000] = "C:\\Users\\Public\\Documents\\Categoria_"; char localceco[1000] = "C:\\Users\\Public\\Documents\\Categoria_ECONOMICO.txt"; char localcint[1000] = "C:\\Users\\Public\\Documents\\Categoria_INTERMEDIARIO.txt"; char localcexe[1000] = "C:\\Users\\Public\\Documents\\Categoria_EXECUTIVO.txt"; char locallocacao[1000] = "C:\\Users\\Public\\Documents\\Locacao_"; float valorLocacao = 0, valorticket = 0; int qtdias = 0, taxa = 0, diasatraso = 0, linha, i = 0, horasatraso = 0, len = 0; char* listacarro [10000]; char mec[100], s = 0; linhalocacao() { printf (" |-------------------------------------------------|\n"); printf (" | Legal Rent A-car - LOCACAO |\n"); printf (" |-------------------------------------------------|\n"); } bool seekLine(FILE *f, int lineNumber, char *line) { int currentSeek = ftell(f); fseek(f, 0, SEEK_SET); while( --lineNumber && (fgets(linhacarro, 256, f) != NULL) ); if(!lineNumber) fgets(linhacarro, 256, f); fseek(f, currentSeek, SEEK_SET); return !lineNumber; } int main () { fprintf (RegistroLocacao,"\n\nNOME: %s\nDATA NASCIMENTO: %s\nRG: %s\nCPF: %s\nCNH: %s\nEndereço: %s, %s, %s, %s - %s\nNUMERO DE TELEFONE: %s", nome, datanasc, rg, cpf, CNH, rua, ncasa, bairro, cidade, UF, telefone); fprintf (RegistroRelat,"\n\nNOME: %s CPF: %s TELEFONE: %s", nome, cpf, telefone); fclose(RegistroLocacao); fclose (RegistroRelat); // Escolha da categoria de carros dividida em três opções. system("cls"); linhalocacao(); printf("\n\n\n(1). ECONOMICO - DIARIA: R$ 86.61 \n\n(2). INTERMEDIARIO - DIARIA: R$ 116.61\n\n(3). EXECUTIVO - DIARIA: R$ 166.61\n\n"); printf("Digite a opcao desejada: "); scanf("%c", &opcCategoria); if (opcCategoria == '1') { // Lendo arquivos previamente criados. ListaCarros = fopen(localceco, "r"); if((ListaCarros = fopen(localceco, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } RegistroLocacao = fopen (locallocacao, "a"); if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } RegistroRelat = fopen (localrelat, "a"); if((RegistroRelat = fopen(localrelat,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); linhalocacao(); setbuf(stdin, NULL); // Exibindo o conteúdo do arquivo para que o cliente possa escolher o carro. while (fgets(linhacarro, 10000, ListaCarros) != NULL) { listacarro[i] = strdup (linhacarro); i++; printf("(%d). %s", i, linhacarro); } i = 0; printf("\n\nInforme a opcao desejada: "); scanf ("%d", &linha); setbuf(stdin, NULL); // Buscando linha especifica dentro do arquivo texto. if (seekLine(ListaCarros, linha, linhacarro)) len = strlen (linhacarro); len = len - 2; fprintf (RegistroLocacao, "\nCarro: %s", linhacarro); fprintf (RegistroRelat, "\nCarro: %s", linhacarro); for (s = 0; s < len; s++) { mec[s] = linhacarro[s]; } strcat (mec, A); printf ("%s", mec); // Cálculo de valor da locação * quantidade de dias escolhidos pelo cliente. printf("\n\nDeseja alugar o carro por quantos dias?\n\n"); scanf ("%d", &qtdias); setbuf(stdin, NULL); valorLocacao = 86.61; valorLocacao = valorLocacao * qtdias; printf ("\n\nDigite a data de devolucao do veiculo: "); scanf ("%s", &devolucao); setbuf (stdin, NULL); // Coleta da data da locação, salvando a data e o carro alugado no arquivo locallocacao. _strdate (dateStr); _strtime (timeStr); fprintf (RegistroLocacao, "\nData de locacao: %s %s Data de devolucao: %s %s", dateStr, timeStr, devolucao, timeStr); fprintf (RegistroRelat, "Data da locacao: %s %s Data de devolucao: %s %s", dateStr, timeStr, devolucao, timeStr); fclose (RegistroRelat); fclose (ListaCarros); fclose (RegistroLocacao); ListaCarros = fopen(localceco, "a"); if((ListaCarros = fopen(localceco, "a"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(linhacarro, 10000, ListaCarros) != NULL) { listacarro[i] = strdup (linhacarro); } if (seekLine(ListaCarros, linha, linhacarro)) fprintf (ListaCarros, "\n%s", mec); fclose (ListaCarros); } } Categoria_ECONOMICO.txt
  3. o problema é o seguinte. por exemplo, ao criar um arquivo texto para usar como banco de dados utilizo isso: strcat (localceco, Categoria); strcat (localceco, txt); e a cada laço isso vai acumulando, por exemplo o nome do arquivo vai mudando a cada loop por causa do strcat: ECONOMICO ECONOMICOECONOMICOtxt ECONOMICOECONOMICOtxtECONOMICO assim por diante. essa parte que passei do programa está funcionando corretamente @devair1010 , o problema é zerar as variáveis dentro das funções que eu criei
  4. o problema não é essa variáve l@devair1010 . o problema são as variáveis dentro das funções. Tipo Relatório, Locação, Cadastro de Veículos... dentro dessas funções uso concatenação de variáveis e a cada loop elas vão acumulando, além disso as variáveis dentro das funções também vão acumulando informações.
  5. Boa noite, rapa! É o seguinte, terminei o meu programa e agora tô tentando fazer ele rodar continuamente com um laço. No entanto, dentro das funções do meu programa eu uso concatenação de variáveis e a cada laço tanto a concatenação quanto outras variaveis ficam acumulando informações. Queria saber se tem algum comando que eu possa usar pra zerar as minhas variaveis a cada loop no laço. Alguém pode me ajudar? int main () { linhas (); do{ printf("\n"); printf(" Seja Bem-Vindo! \n\n Digite 'c' para continuar ou 's' para sair: "); scanf("%c",&opp); setbuf (stdin, NULL); system("CLS"); if (opp == 'c'){ linhas (); printf ("\n\n(1). LOCACAO\n\n(2). CADASTRO/DEVOLUCAO DE VEICULOS\n\n(3). PAGAMENTO\n\n(4). RELATORIO\n\n"); printf ("Digite a opcao desejada: "); scanf ("%c", &opcprin); setbuf (stdin, NULL); system ("cls"); switch (opcprin){ case '1': linhalocacao (); printf ("\n"); Locacao (); break; case '2': linhacadastro (); printf ("\n"); CadastroCarros (); break; case '3': linhapagamento (); printf ("\n"); Pagamento (); break; case '4': linharelatorio (); printf ("\n"); Relatorio (); } } }while (opp != 's'); }
  6. Conforme na imagem "teste" durante a execução do programa preciso saber como ler a linha específica da placa do carro que o cliente digitar. Com essa linha específica nós precisamos fazer duas coisas: A primeira seria alterar o "Status: D" dela para "Status A", mudando de disponível para alugado. A segunda seria pegar a linha completa, do começo ao fim e salvá-la junto com o cadastro do cliente, onde os dados do cliente estão sendo salvos. // Declaração de livrarias da plataforma. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> // Declaração das váriaveis do tipo: número, caractere e arquivo de texto. char opcao, nome[150], rg[100], cpf[100], CNH[100], dataNSC[10000] = " ", opclista; char txt[100] = ".txt", datanasc[10000] = " ", Linha[100], telefone[10], status[20], Categoria[20], pLc[7]; char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], modelo[15], km[15], anocarro[4], categoria[20]; char dataHoraR[10000] = " ", dataHoraE[10000] = " ", opcidade, opcong, opcCategoria, cpfpagamento[20], ticket [10000]; FILE *arquivo ,*RegistroLocacao,*RegistroCarro, *ListaCarros, *arq, *RegistroRelat; char dateStr[9], timeStr[9], opcarro[100] = "Carro_", listacarro [10000], registrocarro [10000], opcentrega, opcrelat; char localcarro[100] = "C:\\Users\\Public\\Documents\\Carro_"; char locallocacao[100] = "C:\\Users\\Public\\Documents\\Locacao_"; char localrelat [1000] = "C:\\Users\\Public\\Documents\\Locacoes_"; char localc[1000] = "C:\\Users\\Public\\Documents\\Categoria_"; char localceco[1000] = "C:\\Users\\Public\\Documents\\Categoria_ECONOMICO"; char localcint[1000] = "C:\\Users\\Public\\Documents\\Categoria_INTERMEDIARIO"; char localcexe[1000] = "C:\\Users\\Public\\Documents\\Categoria_EXECUTIVO"; float valorLocacao = 0, valorticket = 0; int qtdias = 0; int main () { printf("\n\n"); printf(" >>> PARA REALIZAR LOCACAO FAVOR PREENCHER informações DO CLIENTE: <<< "); printf("\n\n"); printf("\n NOME COMPLETO: "); gets (nome); setbuf(stdin, NULL); printf("\n DATA DE NASCIMENTO: "); gets (datanasc); setbuf(stdin, NULL); printf("\n RG: "); gets (rg); setbuf(stdin, NULL); printf("\n CPF: "); gets (cpf); setbuf(stdin, NULL); printf("\n CNH: "); gets (CNH); setbuf(stdin, NULL); system("cls"); printf("\n\n"); printf(" >>> POR FAVOR PREENCHA O ENDERECO DO CLIENTE: <<< "); setbuf(stdin, NULL); printf("\n\n"); printf("\n UF: "); gets (UF); setbuf(stdin, NULL); printf("\n CIDADE: "); gets (cidade); setbuf(stdin, NULL); printf("\n BAIRRO: "); gets (bairro); setbuf(stdin, NULL); printf("\n RUA: "); gets (rua); setbuf(stdin, NULL); printf("\n NUMERO: "); gets (ncasa); setbuf(stdin, NULL); system("cls"); printf("\n\n\n NUMERO DE TELEFONE DO CLIENTE: "); gets (telefone); setbuf(stdin, NULL); // Concatenação de váriaveis. strcat (locallocacao, cpf); strcat (locallocacao, txt); strcat (localrelat, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } if((RegistroRelat = fopen(localrelat,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (RegistroLocacao,"\n\nNOME: %s\nDATA NASCIMENTO: %s\nRG: %s\nCPF: %s\nCNH: %s\nEndereço: %s, %s, %s, %s - %s\nNUMERO DE TELEFONE: %s", nome, datanasc, rg, cpf, CNH, rua, ncasa, bairro, cidade, UF, telefone); fprintf (RegistroRelat,"\n\nNOME: %s RG: %s Endereço: %s, %s, %s, %s - %s TELEFONE: %s", nome, rg, rua, ncasa, bairro, cidade, UF, telefone); fclose(RegistroLocacao); fclose (RegistroRelat); // Escolha da categoria de carros dividida em três opções. system("cls"); printf(" ESCOLHA A CATEGORIA DESEJADA: \n\n\n 1 - ECONOMICO.\n\n 2 - INTERMEDIARIO.\n\n 3 - EXECUTIVO.\n\n"); scanf("%c", &opcCategoria); if (opcCategoria == '1') { // Concatenação de váriaveis. strcat (localceco, txt); // Lendo o arquivo previamente criado na tela de cadastro de carros. ListaCarros = fopen(localceco, "r"); if((ListaCarros = fopen(localceco, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); // Exibindo o conteúdo do arquivo para que o cliente possa escolher o carro. while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); } fclose (ListaCarros); printf("INFORME A PLACA DO CARRO DESEJADO: "); scanf ("%s", &opcarro); setbuf(stdin, NULL); // Cálculo de valor da locação * quantidade de dias escolhidos pelo cliente. printf("DESEJA ALUGAR O CARRO POR QUANTOS DIAS?\n"); scanf ("%d", &qtdias); setbuf(stdin, NULL); valorLocacao = 89.90; valorLocacao = valorLocacao * qtdias; // Concatenação de váriaveis. strcat (localcarro, opcarro); strcat (localcarro, txt); // Lendo e copiando o conteúdo de localcarro para locallocacao. RegistroCarro = fopen(localcarro, "r"); if((RegistroCarro = fopen(localcarro, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(registrocarro, 10000, RegistroCarro) != NULL) // Coleta da data da locação, salvando a data e o carro alugado no arquivo locallocacao. _strdate (dateStr); _strtime (timeStr); fprintf (RegistroLocacao, "\nData e hora da locacao: %s %s", dateStr, timeStr); fprintf (RegistroLocacao, "\n%s", registrocarro); fclose (RegistroCarro); fclose (RegistroLocacao); } else if (opcCategoria == '2') { // Concatenação de váriaveis. strcat (localcint, Categoria); strcat (localcint, txt); // Lendo o arquivo previamente criado na tela de cadastro de carros. ListaCarros = fopen(localcint, "r"); if((ListaCarros = fopen(localcint, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); // Exibindo o conteúdo do arquivo para que o cliente possa escolher o carro. while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); } fclose (ListaCarros); printf("INFORME A PLACA DO CARRO DESEJADO: "); scanf ("%s", &opcarro); setbuf(stdin, NULL); // Cálculo de valor da locação * quantidade de dias escolhidos pelo cliente. printf("DESEJA ALUGAR O CARRO POR QUANTOS DIAS?\n"); scanf ("%d", &qtdias); setbuf(stdin, NULL); valorLocacao = 119.90; valorLocacao = valorLocacao * qtdias; // Concatenação de váriaveis. strcat (localcarro, opcarro); strcat (localcarro, txt); // Lendo e copiando o conteúdo de localcarro para locallocacao. RegistroCarro = fopen(localcarro, "r"); if((RegistroCarro = fopen(localcarro, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(registrocarro, 10000, RegistroCarro) != NULL) { if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } // Coleta da data da locação, salvando a data e o carro alugado no arquivo locallocacao. _strdate (dateStr); _strtime (timeStr); fprintf (RegistroLocacao, "\nData e hora da locacao: %s %s", dateStr, timeStr); fprintf (RegistroLocacao, "\n%s", registrocarro); fclose (RegistroCarro); fclose (RegistroLocacao); } } else if (opcCategoria == '3') { // Concatenação de váriaveis. strcat (localcexe, txt); // Lendo o arquivo previamente criado na tela de cadastro de carros. ListaCarros = fopen(localcexe, "r"); if((ListaCarros = fopen(localcexe, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); // Exibindo o conteúdo do arquivo para que o cliente possa escolher o carro. while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); } fclose (ListaCarros); printf("INFORME A PLACA DO CARRO DESEJADO: "); scanf ("%s", &opcarro); setbuf(stdin, NULL); // Cálculo de valor da locação * quantidade de dias escolhidos pelo cliente. printf("DESEJA ALUGAR O CARRO POR QUANTOS DIAS?\n"); scanf ("%d", &qtdias); setbuf(stdin, NULL); valorLocacao = 89.90; valorLocacao = valorLocacao * qtdias; // Concatenação de váriaveis. strcat (localcarro, opcarro); strcat (localcarro, txt); // Lendo e copiando o conteúdo de localcarro para locallocacao. RegistroCarro = fopen(localcarro, "r"); if((RegistroCarro = fopen(localcarro, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(registrocarro, 10000, RegistroCarro) != NULL) // Coleta da data da locação, salvando a data e o carro alugado no arquivo locallocacao. _strdate (dateStr); _strtime (timeStr); fprintf (RegistroLocacao, "\nData e hora da locacao: %s %s", dateStr, timeStr); fprintf (RegistroLocacao, "\n%s", registrocarro); fclose (RegistroCarro); fclose (RegistroLocacao); } else { printf ("Opcao invalida"); system ("pause"); return 0; } system("cls"); printf("O cliente possui mais de 60 anos?\n1. SIM\n2. NAO\n"); scanf("%c", &opcidade); setbuf(stdin, NULL); if (opcidade == '1') { valorLocacao = valorLocacao - valorLocacao*0.1; } system("cls"); printf("O cliente possui afiliacao com a ONG?\n1. SIM\n2. NAO\n"); scanf("%c", &opcong); setbuf(stdin, NULL); if (opcong == '1') { valorLocacao = valorLocacao - valorLocacao*0.05; } if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf(RegistroLocacao, "\nTotal a pagar: R$ .2%f", valorLocacao); fclose (RegistroLocacao); }
  7. E aí, rapa! Então, eu tô usando um laço de repetição para ler todo o conteúdo de um arquivo texto, no entanto, ele lê apenas a primeira linha. Alguém pode me ajudar? RegistroCarro = fopen(localcarro, "r"); if((RegistroCarro = fopen(localcarro, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(registrocarro, 10000, RegistroCarro) != NULL) { if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (RegistroLocacao, "\n%s", registrocarro);
  8. Boa tarde, rapa! Estou tentando fazer um comando para calcular os descontos de locação do meu programa mas sempre dá 0 no final. Também gostaria de saber qual tipo de variável é ideal para representar números em forma de R$. Alguém pode me ajudar? Segue o código: // Declaração de livrarias da plataforma. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> // Declaração das váriaveis do tipo: número, caractere e arquivo de texto. char opcao, nome[150], rg[100], cpf[100], CNH[100], dataNSC[10000] = " "; char txt[100] = ".txt", xlsx[100] = ".xlsx", datanasc[10000] = " ", Linha[100], telefone[10]; char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], modelo[15], km[15], anocarro[4], categoria[20], status[20], Categoria[20], pLc[7]; char dataHoraR[10000] = " ", dataHoraE[10000] = " ", opcidade, opcong; FILE *arquivo ,*RegistroLocacao,*RegistroCarro, *ListaCarros, *arq; char dateStr[9], timeStr[9], opcarro[100] = "Carro_", listacarro [1000]; char localcarro[100] = "C:\\Users\\Public\\Documents\\Carro_"; char locallocacao[100] = "C:\\Users\\Public\\Documents\\Locacao_"; char localc[1000] = "C:\\Users\\Public\\Documents\\Categoria_"; char localceco[1000] = "C:\\Users\\Public\\Documents\\Categoria_ECONOMICO"; char localcint[1000] = "C:\\Users\\Public\\Documents\\Categoria_INTERMEDIARIO"; char localcexe[1000] = "C:\\Users\\Public\\Documents\\Categoria_EXCUTIVO"; float valorLocacao = 200.00; int main () { printf("O cliente possui mais de 60 anos?\n1. SIM\n2. NAO\n"); scanf("%c", &opcidade); setbuf(stdin, NULL); if (opcidade == '1') { valorLocacao = valorLocacao - valorLocacao*0.1; } printf("O cliente possui afiliacao com a ONG?\n1. SIM\n2. NAO\n"); scanf("%c", &opcong); setbuf(stdin, NULL); if (opcong == '1') { valorLocacao = valorLocacao - valorLocacao*0.05; } printf("%f", &valorLocacao); }
  9. Velho! Muito obrigado pela atenção e dicas. Tudo que você disse até o momento deu certinho. Muito obrigado, de coração!
  10. E aí rapa! É o seguinte, estou criando um programa de uma locadora de carros mas tenho uma dúvida. Ao cadastrar o carro estou criando dois arquivos que vão ser utilizados com objetivos diferentes e isso está funcionando. Gostaria de saber como faço para buscar um arquivo específico pelo seu nome. Porque quando a pessoa for escolher o carro ela vai digitar a sua placa (THC0420) e gostaria de puxar apenas o arquivo que está com o nome "Carro_THC0420.txt" que vai conter apenas as informações daquele carro, a partir daí quero pegar essas informações do arquivo "Carro_THC0420" e anexá-las ao arquivo de cadastro da pessoa. Quais comandos utilizo para fazer isso? Segue o código abaixo: // Declaração de livrarias da plataforma. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> // Declaração das váriaveis do tipo: número, caractere e arquivo de texto. char opcao, nome[150], rg[100], cpf[100], CNH[100], dataNSC[10000] = " "; char txt[100] = ".txt", xlsx[100] = ".xlsx", datanasc[10000] = " ", Linha[100], telefone[10]; char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], modelo[15], km[15], anocarro[4], categoria[20], status[20], Categoria[20], pLc[7]; char dataHoraR[10000] = " ", dataHoraE[10000] = " "; FILE *arquivo ,*RegistroLocacao,*RegistroCarro, *ListaCarros, *arq; char dateStr[9], timeStr[9], opcarro[100] = "Carro_", listacarro [1000]; char localcarro[100] = "C:\\Users\\Public\\Documents\\Carro_"; char locallocacao[100] = "C:\\Users\\Public\\Documents\\Locacao_"; char localc[1000] = "C:\\Users\\Public\\Documents\\Categoria_"; char localceco[1000] = "C:\\Users\\Public\\Documents\\Categoria_ECONOMICO"; char localcint[1000] = "C:\\Users\\Public\\Documents\\Categoria_INTERMEDIARIO"; char localcexe[1000] = "C:\\Users\\Public\\Documents\\Categoria_EXCUTIVO"; // Estruturas prontas(Funcionam como objetos sendo inseridos a qualquer momento no contexto do software). // Estrutura principal, aparecerá em praticamente todas as telas do projeto. linha() { printf (" |-------------------------------------------------|\n"); printf (" | Legal Rent Acar - Locação de Veículos |\n"); printf (" |-------------------------------------------------|\n"); } // Cadastro das informações necessárias do usuário no sistema. Locacao() { printf("\n\n"); printf(" >>> PARA REALIZAR LOCACAO FAVOR PREENCHER informações DO CLIENTE: <<< "); printf("\n\n"); printf("\n NOME COMPLETO: "); gets (nome); printf("\n DATA DE NASCIMENTO: "); gets (datanasc); printf("\n RG: "); gets (rg); printf("\n CPF: "); gets (cpf); printf("\n CNH: "); gets (CNH); system("cls"); printf("\n\n"); printf(" >>> POR FAVOR PREENCHA O ENDERECO DO CLIENTE: <<< "); printf("\n\n"); printf("\n UF: "); gets (UF); printf("\n CIDADE: "); gets (cidade); printf("\n BAIRRO: "); gets (bairro); printf("\n RUA: "); gets (rua); printf("\n NUMERO: "); gets (ncasa); system("cls"); printf("\n\n\n NUMERO DE TELEFONE DO CLIENTE: "); gets (telefone); // Concatenação de váriaveis. strcat (locallocacao, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((RegistroLocacao = fopen(locallocacao,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (RegistroLocacao,"\n\nNOME: %s\nDATA NASCIMENTO: %s\nRG: %s\nCPF: %s\nCNH: %s\nEndereço: %s, %s, %s, %s - %s\nNUMERO DE TELEFONE: %s", nome, datanasc, rg, cpf, CNH, rua, ncasa, bairro, cidade, UF, telefone); fclose(RegistroLocacao); system("cls"); printf(" ESCOLHA A CATEGORIA DESEJADA: \n\n\n 1 - ECONOMICO.\n\n 2 - INTERMEDIARIO.\n\n 3 - EXECUTIVO.\n\n"); gets(opcCategoria); if (opcCategoria == '1') { strcat (localceco, Categoria); strcat (localceco, txt); ListaCarros = fopen(localceco, "r"); if((ListaCarros = fopen(localceco, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); printf("INFORME A PLACA DO CARRO DESEJADO:\n"); while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); fclose (ListaCarros); } scanf("%s", &opcarro); strcat (localcarro, opcarro); ListaCarros = fopen(localcarro, "r"); if((ListaCarros = fopen(localcarro, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); fclose (ListaCarros); } } else if (opcCategoria == '2') { strcat (localcint, Categoria); strcat (localcint, txt); ListaCarros = fopen(localcint, "r"); if((ListaCarros = fopen(localcint, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); printf("INFORME A PLACA DO CARRO DESEJADO:\n"); while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); fclose (ListaCarros); } scanf("%s", &opcarro); } else if (opcCategoria == '3') { strcat (localcexe, Categoria); strcat (localcexe, txt); ListaCarros = fopen(localcexe, "r"); if((ListaCarros = fopen(localcexe, "r"))== NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } system("cls"); setbuf(stdin, NULL); printf("INFORME A PLACA DO CARRO DESEJADO:\n"); while (fgets(listacarro, 10000, ListaCarros) != NULL) { printf("%s", listacarro); fclose (ListaCarros); } scanf("%s", &opcarro); } else { printf ("Opcao invalida"); system (pause); return 0; } } // Cadastro de veículos no sistema. CadastroCarros() { printf("\n\n"); printf(" >>> PREENCHA AS informações DO CARRO: <<< "); printf("\n\n"); printf("\n MARCA: "); gets (marca); printf("\n MODELO: "); gets (modelo); printf("\n PLACA: "); gets (pLc); printf("\n ANO: "); gets (anocarro); printf("\n KM: "); gets (km); printf("\n CATEGORIA: "); gets (Categoria); printf("\n STATUS: "); gets (status); // Concatenação de váriaveis. strcat (localc, Categoria); strcat (localc, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((ListaCarros = fopen(localc,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (ListaCarros,"Marca: %s Modelo: %s Ano: %s Placa: %s KM: %s Categoria: %s Status: %s\n\n", marca, modelo, anocarro, pLc, km, Categoria, status); fclose(ListaCarros); // Concatenação de váriaveis. strcat (localcarro, pLc); strcat (localcarro, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((RegistroCarro = fopen(localcarro,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (RegistroCarro," Marca: %s\n Modelo: %s\n Ano: %s\n Placa: %s\n KM: %s\n Categoria: %s\n Status: %s\n\n\n", marca, modelo, anocarro, pLc, km, Categoria, status); fclose(RegistroCarro); } // Locação de Veículos
  11. Boa noite, rapa! Estou criando um programa para locação de carros. E criei uma tela de cadastro de carros, estou cadastrando o mesmo carro duas vezes em arquivos diferentes pois vou usá-los para funções diferentes. No entanto, quando vou fazer um segundo cadastro ocorre um erro (a variável categoria aparece repetidamente dentro do arquivo). Alguém pode me ajudar a encontrar o erro neste código? Desde já agradeço MUITO! Segue: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> // Declaração das váriaveis do tipo: número, caractere e arquivo de texto. char opcao, nome[150], rg[100], cpf[100], CNH[100], dataNSC[10000] = " ",localc[100] = "Z:\\Visualg\\Categoria",locallocacao[100] = "Z:\\Visualg\\Locacao_"; char txt[100] = ".txt", xlsx[100] = ".xlsx", datanasc[10000] = " ", Linha[100], telefone[10], localcarro[100] = "Z:\\Visualg\\Carro_"; char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], modelo[15], km[15], anocarro[4], categoria[20], status[20], pc[7], Categoria[20]; char dataHoraR[10000] = " ", dataHoraE[10000] = " "; FILE *arquivo ,*RegistroLocacao,*RegistroCarro, *ListaCarros, *arq; char dateStr[9], timeStr[9]; int main () { printf("\n\n"); printf(" >>> PREENCHA AS informações DO CARRO: <<< "); printf("\n\n"); printf("\n MARCA: "); gets (marca); setbuf(stdin, NULL); printf("\n MODELO: "); gets (modelo); setbuf(stdin, NULL); printf("\n PLACA: "); gets (pc); setbuf(stdin, NULL); printf("\n ANO: "); gets (anocarro); setbuf(stdin, NULL); printf("\n KM: "); gets (km); setbuf(stdin, NULL); printf("\n CATEGORIA: "); gets (Categoria); setbuf(stdin, NULL); printf("\n STATUS: "); gets (status); setbuf(stdin, NULL); // Concatenação de váriaveis. strcat (localc, Categoria); strcat (localc, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((ListaCarros = fopen(localc,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (ListaCarros,"Marca: %s Modelo: %s Ano: %s Placa: %s KM: %s Categoria: %s Status: %s\n\n", marca, modelo, anocarro, pc, km, Categoria, status); fclose(ListaCarros); // Concatenação de váriaveis. strcat (localcarro, pc); strcat (localcarro, txt); // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas. if((RegistroCarro = fopen(localcarro,"a")) == NULL) { printf("Erro ao abrir o arquivo!\n"); exit(1); } fprintf (RegistroCarro," Marca: %s\n Modelo: %s\n Ano: %s\n Placa: %s\n KM: %s\n Categoria: %s\n Status: %s\n\n\n", marca, modelo, anocarro, pc, km, Categoria, status); fclose(RegistroCarro); É nois!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...