Jump to content

Programação em C


Panagyota
 Share

Recommended Posts

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

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

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
 Share

×
×
  • 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.