How do I compare the address of a vector position N with an address the user enters?

Asked

Viewed 50 times

0

I’m having trouble solving this question. Could someone help me ? Follow the body of the question:

6 - Make a program that simulates 'virtually' the memory of a computer: the user starts by specifying the memory size (defines how many bytes have the memory), and then he will have 2 options: insert a data in a given address, or consult the data contained in a given address. Memory should start with all data zeroed.

Follow what I’ve done in code:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL,"");
    int tam_memoria, opcao, i;
    char dado[50], *endereco;

    char *p;

    printf("Defina o tamanho da memória: \n");
    scanf("%d", &tam_memoria);
    //criando a memoria
    char vetor_memoria;
    vetor_memoria = (char*)calloc(tam_memoria, sizeof(char));
    printf("Lista de opções: \n");
    printf("1 - inserir um dado em um determinado endereço. \n");
    printf("2 - consultar o dado contido em um determinado endereço. \n");
    printf("Escolha uma opção: \n");
    scanf("%d", &opcao);
    if (opcao == 1){
        printf("Digite o dado que quer inserir no vetor: \n");
        scanf("%s",dado);
        printf("Digite o endereço no qual quer inserir o valor: \n");
        scanf("%p", endereco);
        for(i=0;i<=tam_memoria;i++){
            //aver q nao eh assim
            p = &vetor_memoria[i];
            if(*p == *endereco){
                    vetor_memoria[i] = dado;
            }
        }
    }else if (opcao == 2){
        printf("Digite o endereco do dado para ser consultado na memoria: \n");
        scanf("%p", endereco);
        for(int i=0;i<=tam_memoria;i++){
            //aver q nao eh bem assim
            if(endereco == &vetor_memoria[i]){
                    //vetor_memoria[i] = dado;
                    printf("Dado contigo no endereco %p : %s \n", endereco, dado);
            }
        }
    }else(
        printf("Opção inválida");
    )
}
  • 1

    I think you are complicating unnecessarily. Consider your memory as an array and use the array index as the address.

No answers

Browser other questions tagged

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