C language - cannot acess memory 0x42be0000

Asked

Viewed 38 times

1

I cannot access the memory and bring the Value. The caroname variable also gives the same message.

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

struct carros{
    int id; 
    char *placa[8];
    char *nome[50]; *
    float totalPagar; 
    char *dataHora[80]; 
    char *dataEntrega[80]; 
    int alugado; 
    int *valorDiaria; 
    int qtdDiaria; 
    char *locadorNome[60];  
}Carro[5];

void cadastrarCar();
void carrosDisp();
void efetuarLocacao();
double calculoDiarias(int qtdDiarias, int valorDiaria, int idoso, int parceira);
void emitirNota(double valorTotal, char dataHora[50], char dataDevolucao[50], char placaCarro[8], char nomeCliente[50], char carro[50]);

void cadastrarCar(){
    Carro[0].id = 1;
    Carro[0].placa[8] = "JET-9885";
    Carro[0].nome[50] = "Fiat Uno 1.0 - Basico";
    Carro[0].alugado = 0;
    Carro[0].valorDiaria = 50;

    Carro[1].id = 2;
    Carro[1].placa[8] = "JRT-5231";
    Carro[1].nome[50] = "Grand Siena Completo";
    Carro[1].alugado = 0;
    Carro[1].valorDiaria = 70;

    Carro[2].id = 3;
    Carro[2].placa[8] = "JGT-2533";
    Carro[2].nome[50] = "Gol G5 - Completo";
    Carro[2].alugado = 0;
    Carro[2].valorDiaria = 60;

}

The other part of my code is

void efetuarLocacao(char msg[200]){

    limparConsole();

    // mensagem para erro ou aviso
    printf("%s", msg);

    int i, cod, qtdDiaria, valorTotal, cortesia=0, parceiraOng=0, idoso=0;
    char nomeProp[60], strIdoso[1];
    strIdoso[1] ='n';
    nomeProp[60] = NULL;

    // HORA E DATA DE AGORA
    time_t time_raw_format;
    struct tm * ptr_time;

    char buffer[80];
    char dataDevolucao[80];
    char dia[15];
    char mes[15];
    char ano[15];

    time ( &time_raw_format );
    ptr_time = localtime ( &time_raw_format );
    strftime(buffer,80,"%d/%m/%Y %X",ptr_time);
    strftime(dia,15,"%d",ptr_time);
    strftime(mes,15,"%m.",ptr_time);
    strftime(ano,15,"%Y",ptr_time);


    // CARROS DISPONIVEIS EM TELA
    printf("Carros disponiveis: \n");
    carrosDisp(0);

    printf("=================================================\n");
    printf("Digite o codigo do carro a ser alugado:\n");
    scanf("%d",&cod);   

    for(i=0;i<20; i++){
        if(Carro[i].id == cod){
                if(Carro[i].alugado == 0){


                // VALICADAÇÃO SE A EMPRESA E PARCEIRA DA ONG
                if(parceiraOng == 0){
                    char strEmpresa[1];
                    printf("Empresa parceira da ONG? s/n: \n");
                    scanf("%s", &strEmpresa);
                    if(strcmp(strEmpresa, "s") == 0)
                        parceiraOng = 1;
                    else
                        parceiraOng = 0;
                }

                qtdDiaria=1;
                // QUANTIDADE DE DIARIAS A ALUGAR
                if(qtdDiaria == 1){
                        printf("Digite a quantidade de diaria(s) que ira alugar: \n");
                        scanf("%d", &qtdDiaria);
                        Carro[i].qtdDiaria = qtdDiaria;
                }

                // NOME DO LOCATARIO
                if(nomeProp[60] == NULL){   

                    printf("Digite o nome do cliente: \n");
                    scanf("%s", &nomeProp);
                    Carro[i].locadorNome[60] = nomeProp;

                }

                idoso=0;
                // VALIDAÇÃO PARA IDOSO
                if(idoso == 0){

                    printf("O cliente e idoso? s/n: \n");
                    scanf("%s", &strIdoso); 
                    if(strcmp(strIdoso, "s") == 0)
                        idoso = 1;
                    else
                        idoso = 0;

                }

                // DIARIA DE CORTERSIA
                if(qtdDiaria >= 5){

                            printf("Você ganhou uma diaria cortesia, deseja usa-la? Digite '1' para SIM e '0' para NAO\n");
                            scanf("%d", &cortesia);

                }

                Carro[i].dataHora[80] = buffer; 

                // DATA E HORA DA DEVOLUÇÃO  
                time_t now = time( NULL);
                struct tm now_tm = *localtime( &now);               
                struct tm t = now_tm;
                t.tm_mday += qtdDiaria+cortesia;
                t.tm_mon = t.tm_mon-1;
                mktime(&t);
                dataDevolucao[80] = asctime(&t);
                strftime(dataDevolucao,80,"%d/%m/%Y %X",&t);

        Carro[i].dataEntrega[80] = dataDevolucao;

                Carro[i].totalPagar = calculoDiarias((int)qtdDiaria, (int)Carro[i].valorDiaria, idoso, parceiraOng);


                Carro[i].alugado = 1; 

                // EMITIR NOTA FISCAL
                char *placa[8];
                placa[8] = Carro[i].placa[8];
                char nomeCarro[50];


                nomeCarro[50] = Carro[i].nome[50];


                emitirNota(Carro[i].totalPagar, buffer, dataDevolucao, placa[8], nomeProp[60], Carro[i].nome[50]);

            }
            else     
                efetuarLocacao("**** Carro selecionado ja esta alugado.\n**** Por favor selecione um novo carro\n\n");
        }

    }

}

I cannot bring the amazed amount in Car[i]. name[50]

nomeCarro[50] = Carro[i].nome[50];

Where I use Car[i]... does not send any value to my function, only error

emitirNota(Carro[i].totalPagar, buffer, dataDevolucao, placa[8], nomeProp[60], Carro[i].nome[50]);
  • 1

    You know that putting the index on the left side is indicating that you want to put in the variable nomeCarro in position 50 of the vector a character, check? nomeCarro[50] refers to the character but you are trying to force an array on it. And this cannot end well. Not to mention the position 50 is invalid for variable

  • I’m new in C and I don’t understand. I could explain again.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.