Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinícius Alves

Struct e Alocação de Memória

Recommended Posts

Fala galera, Tudo bem? Estou com um problemão nesse exercício aqui
Baseado no programa anterior, implemente um mecanismo para associar nomes às posições de memória usando o struct (um nome de uma posição de memória tem até 10 caracteres). O usuário irá poder usar 5 opções diferentes para manipular a memória: 1) Associar um nome com uma posição de memória; 2) Informar um endereço e um valor para armazenar neste endereço; 3) Informar um nome de uma posição de memória e armazenar um valor nesta posição; 4) Pedir para recuperar o dado contido em uma posição de memória; 5) Pedir para recuperar o dado, indicando o nome da posição de memória onde ele se encontra.

Esse aqui é o meu exercício anterior.

#include <stdlib.h>
#include <stdio.h>
 
struct memoria{
 char nome[10];
 int ender;
};
 
int main() {
int tam, *p, op;
int i;
int end=0, dad;
printf("Tamanho da memoria:");
scanf("%d", &tam);
struct memoria m[tam];
p=(int*)calloc(tam,sizeof(int));
printf("Voce quer:\n[1] Inserir um nome.\n[2] Consultar dados do endereco.\n");
scanf("%d", &op);
printf("\n");
for (i=0;m[i].nome!='.';i++) {
while(op==1 || op==2){
if(op==1){
printf("\nQual o nome?");
scanf("%s",&m[i].nome);
printf("\nQual o endereco?");
scanf("%d",&m[i].ender);
}
else if(op==2){
printf("Qual o nome do endereco?");
scanf("%s", &m[i].nome);
printf("Inserir dado:");
scanf("%d",&p[i]);
else{
printf("NUMERO ERRADO");}
printf("\n\nVoce quer:\n[1] Inserir um dado.\n[2] Consultar dados do endereco.\n");
scanf("%d", &op);
printf("\n");
}
} 
} 
Eu estou com dúvida na parte de associar os nomes aos índices eu declaro o struct
struct memoria{
char nome[10];
int ender;
} m ;
mas como vou fazer para que o cara digite um nome e apareça o valor do "vetor"?
sei que esse é difícil, se eu tiver explicado mal pergunte. Obrigado pela atenção

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que a declaração da variável seja

 

struct memoria dados[10];

 

P/ vc imprimir o conteúdo dos campos: dados.nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado pedirem pra você escrever isto, já que em C você não escolhe em qual endereço poderá armazenar valores.

 

Se precisar tratar ponteiros como inteiros, sugiro usar o tipo uintptr_t ao invés de int (se é que está definido na sua implementação, já que é um tipo opcional).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.