Panagyota Posted March 22, 2012 Report Share Posted March 22, 2012 Boa tarde a todos, eu estou a desenvolver um projecto de programação inicial e estou com umas duvidas, porque não estou a conseguir aceder aos campos de uma estrutura para guardar um elemento num vector Ind.pid_book[n], n=0,1,... O meu .c tenho: struct book Ind; void main_book(int qt) { int i; struct book *ind; ind=(struct book *)malloc(sizeof(struct book)); pid_t pid_book; for(i=0;i<qt;i++){ pid_book[i]=fork(); if(pid_book==-1){ printf("Erro ao criar o processo filho para o book\n"); }else{ if(pid_book==0){ book_exec(i); printf("O filho foi criado\n"); }else{ printf("PID=%d para o book %d\n",getpid(),ind.book[i],i); } } } } No .h tenho: struct book { int *estantes_livros; int *pid_folhas; int *pid_pasta; int *pid_book; ------------->pretendo aceder a este campo da estrutura para guardar o pid_book }; Na consola aparece-me o seguinte erro: main.c:54: error: subscripted value is neither array nor pointer main.c:64: error: ‘struct book’ has no member named ‘pid_book’ make: *** [main.o] Error 1 Gostaria que me ajudassem porque estou com duvidas na parte da alocação de memoria para depois poder aceder aos campos da estrutura para guardar o pid. Edit: GeSHi adicionado (pmg) Link to comment Share on other sites More sharing options...
pedrosorio Posted March 22, 2012 Report Share Posted March 22, 2012 main.c:64: error: ‘struct indicadores’ has no member named ‘pid_book’ Não tens nenhuma struct indicadores no código que mostraste. E mete tags de code nisso para ser legível. Não respondo a dúvidas por mensagem. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 22, 2012 Report Share Posted March 22, 2012 para que andas a brincar com o fork e afins se ainda estás a aprender a programar ??? que tutorial andas a seguir ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
pmg Posted March 22, 2012 Report Share Posted March 22, 2012 No teu código ind é um ponteiro para uma estrutura cheia de outros ponteiros. Depois do malloc() ficas com um ponteiro válido ... mas os ponteiros internos continuam inválidos. Sugestão: antes de te meteres com fork() e pids e outros conceitos não abrangidos pela definição da linguagem C, acerta o funcionamente das partes que são C puro. Hint: precisas de 1 malloc() para cada ponteiro interno da estrutura. Hint #2: para aceder a um membro duma estrutura quando tens um ponteiro usa a sintaxe ponteiro->membro (é o mesmo que (*ponteiro).membro). What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now