Jump to content
aalex

Segmentation fault estruturas

Recommended Posts

aalex

func (sARGUMENTOS *argumentos, sGUARDA_RECTANGULOS *rects) {

int erro=E_NOERR, i=0;




	while (rects!=NULL) {
		rects++;
		i++;
	}


	strcpy(rects->.Nome, argumentos[1].arg_num);
	rects->.rect.x = 0;
	rects->.rect.y = 0;
	rects->.rect.tamx = argumentos[2].arg_num;
	rects->.rect.tamy = argumentos[3].arg_num;

	if (strcmp(argumentos[4].arg_num, "n") == 0) {
		rects->.roda_rectangulo = NAO;
	}
	else {
		rects->.roda_rectangulo = SIM;
	}


	printf("%s %d %d %d %d", rects[i].Nome, rects[i].rect.x, rects[i].rect.y, rects[i].rect.tamx, rects[i].rect.tamy, rects[i].roda_rectangulo);



return erro;


}

Viva tenho o código acima, que recebe duas estruturas numa estrutura esta os argumentos que recebe da linha de comandos e na outra a estrutura onde vai guardar a informação..

Mas esta a dar-me Segmentation fault e não estou a ver o problema, já utilizei um debuger mas ainda não estou muito por dentro da coisa para chegar ao erro com a informação que me da...  :P

alguma sugestão?

já agora aproveito o tópico para esclarecer umas duvidas?

- quando não indicamos a posição (como no meu código acima) o C insere na ultima posição livre?

- o cliclo while acima serve para calcular a ultima posição livre/tamanho da estrutura?

Share this post


Link to post
Share on other sites
Baderous

No fim do ciclo while, rects está a apontar para NULL, logo ao tentares fazer strcpy para algo que está a NULL, dá segmentation fault. Também não percebi essa sintaxe que estás a usar com uma seta seguida de um ponto. Ou usas um ou outro. Nesse caso parece-me ser a seta.

Share this post


Link to post
Share on other sites
aalex

No fim do ciclo while, rects está a apontar para NULL, logo ao tentares fazer strcpy para algo que está a NULL, dá segmentation fault. Também não percebi essa sintaxe que estás a usar com uma seta seguida de um ponto. Ou usas um ou outro. Nesse caso parece-me ser a seta.

sim a seta seguida de um ponto esta mal, foi nas alterações que fui fazendo que depois me esqueci de apagar o ponto

neste caso é uma estrutura dentro de outra

"No fim do ciclo while, rects está a apontar para NULL, logo ao tentares fazer strcpy para algo que está a NULL"

como mudo isso? decremento o apontador 1 unidade? não vai ficar a apontar para algo que já existe? ou seja perco o elemento para o qual esta a apontar o apontador porque o vou substituir pelo novo

a ideia era adicionar um novo elemento no fim da estrutura

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.