Jump to content
dguimaraes

Duvida em mostrar conteudo de uma struct

Recommended Posts

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?

Share this post


Link to post
Share on other 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.

Edited by 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.