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");
)
}
I think you are complicating unnecessarily. Consider your memory as an array and use the array index as the address.
– anonimo