GabrielCardelli Postado Novembro 22, 2008 Denunciar Share Postado Novembro 22, 2008 Gente da um luz ae li a apostila mais n entendi mtu bem alguém me explica e da 1 exemplo como ela funciona? abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Novembro 22, 2008 Denunciar Share Postado Novembro 22, 2008 Qual é a dúvida, especificamente?É em relação a ponteiros, estruturas ou ponteiros para estruturas?Ou de tudo isso? Você tentou fazer alguma coisa? Deu errado?Poste o código e o erro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 23, 2008 Autor Denunciar Share Postado Novembro 23, 2008 tipo eu li a apostila 2 vezes eu me deparei com struct fiquei meio grilado ão entendi como ela funciona! os ponteiros to pegando já.. Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Novembro 23, 2008 Denunciar Share Postado Novembro 23, 2008 Estruturas servem para armazenar dados relacionados. É a base das Estruturas de Dados.Por exemplo:struct membro_scriptbrasil { char *nome_de_exibicao, *login, *senha, *email; int id; } Você pode salvar estruturas diretamente num arquivo. Aí começa o básico de um banco de dados. :) fwrite(&ponteiro_para_a_estruutra, sizeof(struct nome_da_estrutura), 1, fp);http://www.ime.usp.br/~pf/algoritmos/aulas/stru.htmlhttp://www.inf.ufpr.br/nicolui/grad/ci067/...Estruturas.htmlhttp://www.sysprog.net/cstruct.html Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 23, 2008 Autor Denunciar Share Postado Novembro 23, 2008 cara então struct seria um conjunto de variaveis? Não to conseguindo entender =/ malzsi fosse ql o objetivo disso?struct data { int dia; int mes; int ano; }no caso seria uma declaração de variaveis com qlobjetivo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Novembro 23, 2008 Denunciar Share Postado Novembro 23, 2008 A grosso modo é isso, mesmo.http://en.wikipedia.org/wiki/StructPor exemplo: consideremos uma função que exiba os valores de um vetor. Em C, não é possível saber o tamanho de um vetor, logo teríamos de fazer assim:void exibe_vetor(int *vetor, int tamanho);Usando uma struct, poder-se-ia fazer:void exibe_vetor(struct vetor v);onde struct vetor é:struct vetor { int *elementos; int tamanho; } Assim o tamanho do vertor está na estrutura. O loop para exibição ficaria assim: for (i = 0; i < v.tamanho; i++) { printf("%d\n", v.elementos[i]); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 23, 2008 Autor Denunciar Share Postado Novembro 23, 2008 vou pegar pra ler isso depois volto pra dizer !! obrigado beraldo! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 24, 2008 Autor Denunciar Share Postado Novembro 24, 2008 (editado) olha eu entendi da seguinte formaa struct serve pra no loca de eu sair colocandoint bola ( int a , int b ) ;Eu crio uma struct pra ela..struct gol {int a;int b;e chamo?int bola (struct gol)?no lugar de int a , int b? é isso?E depois no caso suponto que a struct é gol ficariagol.a =gol.b =é assim?Desculpa ta enchendo o saco mais eu n to entendendo mesmo essa parteabraço---------Beraldo você já meche com C a muito tempo? Editado Novembro 24, 2008 por GabrielCardelli Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Novembro 24, 2008 Denunciar Share Postado Novembro 24, 2008 (editado) Desculpa ta enchendo o saco mais eu n to entendendo mesmo essa parteSe tem dúvida, tem que perguntar.Mas é sempre bom pesquisar antes, claro. às vezes acha-se a resposta mais rapidamente. :)É quase isso. Você errou no protótipo da função. struct gol é um tipo, sendo necessário fazer assim:tipo funcao(struct gol variavel);Aí, na função,. use:variavel.aDá para usar typedef. Aì vocÊ cria um tipo próprio e facilita a criação de variáveis do tipo struct gol.Beraldo você já meche com C a muito tempo?Não. Comecei no meio do ano, na faculdade (antes mexíamos com Pascal. Mas odiei essa linguagem - eu estava acostumado com PHP, que tem sintaxe derivada do C).Mas já mexia com programação há alguns anos (três para ser mais exato). :) Editado Novembro 24, 2008 por Beraldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 24, 2008 Autor Denunciar Share Postado Novembro 24, 2008 (editado) Bom agora entendi! vou estudar mais isto pôs tenho dificuldades!! tambem to com uma duvida de ponteiros outra hora eu posto!!Muito obrigado!!EU fiz a pergunta lá si mechia a muito tempo porque vejo que você responde todo mundo!! Parece ate que tem 30anos de profissão kkk³² brikz AbraçoEDIT-------Bom eu procurei no google mais não achei a resposta pra outra pergunta minha vou anexar aqui si alguém poder responder..Qual a finalidade da utilização de structs? Não só complica o programa? podendo usar somente variaveis? Editado Novembro 24, 2008 por GabrielCardelli Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 24, 2008 Denunciar Share Postado Novembro 24, 2008 Na verdade, structs no geral são muito úteis.Você pode guardar estas informações em um arquivo, passar em uma variável só etc.Em minha opinião, facilitam em vez de complicar.Exemplo simples:Uma pessoa. Vamos dizer que você quer guardar em um array 50 pessoas.Sem structs:... int main(void) { char nome[50][30], short int idade[50], char localidade[50][30]; /* preenche uma pessoa */ strcpy(nome[0], "Joao da Silva"); strcpy(localidade[0], "são Paulo"); idade[0] = 23; funcao(nome[0], idade[0], localidade[0]); return 0; } Com structs: ... typedef struct { char nome[30]; short int idade; char localidade[30]; } pessoa_t; int main(void) { pessoa_t pessoas[50]; strcpy(pessoas[0].nome, "Joao da Silva"); strcpy(pessoas[0].localidade, "são Paulo"); pessoas[0].idade = 23; funcao(&pessoas[0]); return 0; }No exemplo sem structs, é necessário separar uma pessoa em 3 variáveis, complicando o programa.No exemplo com structs, as variáveis ficam "compactadas" em uma só, facilitando o acesso.Vejo muitas outras vantagens ainda, como utilizar memcpy para copiar structs etc.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 24, 2008 Autor Denunciar Share Postado Novembro 24, 2008 (editado) pow cara belo exemplo!! deu pra sacar bem!!Seria então pra 1 posição 3 localidades diferentespessoas[0].nome|| .idade|| . localidadeentendi então quando eu quiser guardar diversos dados ligados entre si eu guardo numa structCerto? como si fosse um formulario de cadastro que no final...Eu só preciso imprimir o pessoas[0].seria isso? Editado Novembro 24, 2008 por GabrielCardelli Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Novembro 24, 2008 Denunciar Share Postado Novembro 24, 2008 (editado) pessoas[0], não. Você tem que especificar a variável da struct que deseja imprimir. Por exemplo:pessoas[0].nomepessoas[0].idade...Concordo com o Durub que structs facilitam, não dificultam. :)E vale lembrar que, em termos de memória, tanto faz colocar variáveis em structs ou isoladamente. O uso de memória é igual. Por exemplo:int pos_x = 5 int pos_y = 7; struct ponto { int pos_x; int pos_y; }; struct ponto var; var.pos_x = 5; var.pos_y = 7;Esses dois exemplos ocupam o mesmo tamanho de memória.Por isso não há desvantagem em usar structs. Editado Novembro 24, 2008 por Beraldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Novembro 25, 2008 Autor Denunciar Share Postado Novembro 25, 2008 (editado) Obrigado Beraldo e Durub! Vou estudar mais aqui!! Editado Dezembro 7, 2008 por GabrielCardelli Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Dezembro 7, 2008 Autor Denunciar Share Postado Dezembro 7, 2008 Bom fiz esse codigo porem ta dando erro alguém me ajuda?#include <stdio.h> #include <stdlib.h> struct clients { char nome[30]; int idade; } testando; int main (void) { testando client[10]; int x; for (x=0;x<10;x++) { printf (" Digite o nome do cliente "); scanf ("%s", client[x].nome); printf (" Digite a idade "); scanf ("%s", client[x].idade); printf (" Cliente cadastrado: %s %s ", client[x].nome,client[x].idade)"; } system ("pause>null"); return (0); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Dezembro 7, 2008 Denunciar Share Postado Dezembro 7, 2008 Você está escrevendo e recebendo a idade com %s, deveria ser %d.E não use system("pause").Use getchar() da stdio.h.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Dezembro 7, 2008 Autor Denunciar Share Postado Dezembro 7, 2008 alguém me ajuda ta fogo ... abaixo o codigo:#include <stdio.h> #include <stdlib.h> /* - */ int num,time=10000; /* - */ struct cadastro_cli { char nome[30],cidade[30]; int idade; }; /* - */ int main () { struct cadastro_cli cadastro[30]; printf (" \n\n "); printf (" ------ PROGRAMA DE APRENDIZAGEM ------- "); printf (" \n\n "); printf (" ------ SEJA BEM VINDOS AO NOSSO SISTEMA ------- "); printf (" \n\n "); printf (" O QUE DESEJA FAZER ? "); printf (" \n\n "); printf ("[1]. CADASTRAR NOVA CONTA \n [2]. BUSCAR SEU SALDO \n [3]. MODIFICAR INFORMAÇÕES "); printf ("\n\n DIGITE O NUMERO: "); scanf ("%d",&num); system ("CLS"); printf (" Aguarde... "); sleep (time); system ("CLS"); while (num>1||num<4) if (num==1) { printf (" OLA!!BEM VINDO AO PROGRAMA DE CADASTRAMENTO DE USUARIO."); printf (" \n\n "); printf (" Digite seu nome: "); scanf ("%s",&cadastro.nome); printf (" Digite sua idade: "); scanf ("%d",&cadastro.idade); printf (" Digite sua cidade: "); scanf ("%s",&cadastro.cidade); return (0); }ta dando erro na struct =/na linha do scanf cadastro.nome.ta dando esse erro:request for member 'nome' in somenthing not a structure or uniono que pode ser?Abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 7, 2008 Denunciar Share Postado Dezembro 7, 2008 cadastro é um vetor de struct cadastro_cli.Logo, não faz sentido usar cadastro.nome, mas, sim, cadastro[indice].nome.Outra coisa: não se usa & no scanf para string, já que uma string é um vetor e o nome da string é um ponteiro.char nome[30]; scanf("%s", nome);é preferível usar fgets() para pegar strings. Além de permitir espaços, não há como ocorrer estouru de buffer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GabrielCardelli Postado Dezembro 7, 2008 Autor Denunciar Share Postado Dezembro 7, 2008 Obrigado novamente... vou concertar os errosAbraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
GabrielCardelli
Gente da um luz ae li a apostila mais n entendi mtu bem alguém me explica e da 1 exemplo como ela funciona? abraço!
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.