• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Jpab

Matriz dinamica - segmentation fault

5 mensagens neste tópico

segmentation fault

	board = (char**)malloc(xlent*sizeof(char*));
if (board==NULL) { printf("ERRO:no memory\n"); exit(1); }
for(k=0;k<xlent;k++) {
	board[k] = (char*)malloc(ylent*sizeof(char));
	if (board[k]==NULL) { printf("ERRO:no memory\n"); exit(1); }
}

for(i = 0; i < ylent; i++) {
	for (j = 0; j <xlent ; j++) {
		while(isspace(val = fgetc(f)));
		board[j][i] = val;

	}
}

ponho o codigo de preencher a matriz em comentario,e funciona.(mas tem de preencher)

com uma matriz sem ser dinamica esse codigo de atribuir funciona :S

nao percebo como nao da. :confused:;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim de repente, parece-me que trocaste as variáveis dos ciclos.

devia ser:

for(i = 0; i < xlent; i++) {       
              for(j = 0; j <ylent ; j++) {             
                while(isspace(val=fgetc(f)));
                board[j][i] = val;
               
                                         }
                                 }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim de repente, umas notas soltas

em C não é preciso fazer cast do resultado do malloc (C++ já não)

matrizes dinâmicas:

char **board = malloc(sizeof(char) * xlen * ylen);

//aceder
board[i*xlen + j]

mas não estou a ver qual o prob com o teu código..

Qual o tipo de board e de val?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo ali com o nata que a ordem dos fors devia ser ao contrário, a menos que queiras efectivamente o efeito intercalado que aquilo provoca.

De resto, não vejo razão para acontecer esse erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora