Ir para conteúdo
Fórum Script Brasil

Robson Pormann Dias

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Robson Pormann Dias

Robson Pormann Dias's Achievements

0

Reputação

  1. 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. // 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); } }
  2. 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. não\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. não\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); }
×
×
  • Criar Novo...