Ir para o conteúdo
dguimaraes

Duvida em mostrar conteudo de uma struct

Mensagens Recomendadas

dguimaraes

Boas pessoal..tou a comecar a programar a pouco tempo e iniciei pra ja em c. Recentemente tive a tentar fazer um mini jogo quem e quem e no qual eu tenho uma STRUCT o problema é...eu queria mostrar o conteudo mas apenas so consigo mostrar o primeiro campo por exemplo:

struct Perfil
{
char name[20];
typeSex sex[20];
typeSkin skin;
typeEyes eyes;
typeHair hair;
typeGlasses glasses;
};

struct Perfil perfis[] =
{

{ "Joao", male, skinWhite, eyesBrown, hairBrown, withoutGlasses },
  { "Diogo", male, skinBrown, eyesBrown, hairBrown, withoutGlasses },
  { "Miguel", male, skinWhite, eyesBlue, hairYellow, withoutGlasses },
  { "Ana", female, skinWhite, eyesBrown, hairRed, withGlasses },
  { "Joana", female, skinWhite, eyesGreen, hairBlack, withoutGlasses },

};

..................................................

void newGame()
{
int i=0;
/*int perfil = random(4);*/
for (i=0; i<5; i++)
printf("%s ", perfis[i].name);

Nesta funcao era suposto eu mostrar o conteudo da struct tipo o seguinte: Joao Diogo Miguel Ana Joana

male male male female female

skinBrown skinWhite skinWhite skinWhite skinWhite

e por ai fora os campos que descrevi em cima...como faco?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
eatg75

Oi boa noite. Em primeiro lugar quando postares listagens de cogigo aqui no P@P

deves utilizar a _tag_ para codigo que e '[ CODE=lang] [ /CODE]' onde lang e a

linguagem de programacao a qual o codigo esta escrito, os valores para lang

pode ser java, perl, c, cpp, lisp, etc...

Em relacao ao teu problema penso que devias ter uma funcao para mostrar os

campos que pretendes da estrutura.

A listagem a seguir seria uma possivel solucao:

void perfil_mostrar(Perfil perfil) {
 printf("Nome : %s\n", perfil.name);
 printf("Sex : %s\n", perfil.sex);
 printf("Eyes : %s\n", perfil.eyes);
 printf("Skin : %s\n", perfil.skin);
 printf("Hair : %s\n", perfil.eyes);
 printf("Glasses : %s\n", perfil.glasses);
}

Porque que nao apresentas a listagem completa da tua funcao newGame()

assim os demais membros do P@P hao de realcar possiveis erros ao mas

praticas de programacao, e podes ficar tranquilo que ninguem ira de

copiar o teu codigo se este o teu receio. Em relacao ao nome que andas

a escolher para os teus identificadores eu recomendaria escolhe-los

numa linguagem e nao em multiplos, de forma a tornar o teu codigo

consistente.

Espero ter ajudado de alguma forma.

EDIT: adicionei espacos na tag CODE de forma a retirar o seu valor semantico.

Editado por eatg75

Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
// definição dos tipos de dados

// definição do tipo de dados Perfil
struct Perfil
{
 char name[20];
 typeSex sex;
 typeSkin skin;
 typeEyes eyes;
 typeHair hair;
 typeGlasses glasses;
};

// dados exemplo
struct Perfil perfis[] =
{
 { "Joao", male, skinWhite, eyesBrown, hairBrown, withoutGlasses },
 { "Diogo", male, skinBrown, eyesBrown, hairBrown, withoutGlasses },
 { "Miguel", male, skinWhite, eyesBlue, hairYellow, withoutGlasses },
 { "Ana", female, skinWhite, eyesBrown, hairRed, withGlasses },
 { "Joana", female, skinWhite, eyesGreen, hairBlack, withoutGlasses },
};

// protótipos de funções de conversão tipo de dados -> string representativa do valor
// (implementa isto dependendo dos domínio dos tipos de dados)
char* typeSex2String(typeSex type);
char* typeSkin2String(typeSkin type);
char* typeEyes2String(typeEyes type);
char* typeHair2String(typeHair type);
char* typeGlasses2String(typeGlasses type);

// função de output de forma tabelar
void output_perfis(struct Perfil * perfis, size_t count, int spacing)
{
 int i = 0;
 char format[8];

 sprintf(format, "%%%ds ", spacing);

 for (i = 0; i < count; i++)
   printf(format, perfis[i].name);
 printf("\n");

 for (i = 0; i < count; i++)
   printf(format, typeSex2String(perfis[i].sex));
 printf("\n");

 // por ai a diante para todos os tipos de dados ...
}

// exemplo da chamada da função de output
output_perfis(perfis, sizeof(perfis) / sizeof(struct Perfil), 19);


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.