此代碼有什麼問題?當我嘗試將結構指針傳遞給函數時出現問題
typedef struct jogador{
char nome[7];
int pecas[6][2];
}Jogador;
void distribuir_pecas(Jogador* jogadores);
int main()
{
Jogador* jogadores;
jogadores = (Jogador*) malloc(4 * sizeof(Jogador));
distribuir_pecas(jogadores);
return 0;
}
void distribuir_pecas(Jogador* jogadores){
int domino[28][2];
int vetor_aux[28];
int i, j;
int peca_sorteada;
int num_jogador = 0;
int num_domino = 0;
srand(time(NULL));
for(i = 0; i < 28; i++){
vetor_aux[i] = 1;
}
for(i = 0 ; i < 7; i++){
for(j = 0; j < 7; j++){
if(j == 0){
j = i;
}
domino[num_domino][0] = i;
domino[num_domino][1] = j;
//printf("%d*%d\n", domino[num_domino][0], domino[num_domino][1]);
num_domino++;
}
}
while(num_jogador < 4){
for(i = 0; i < 6;){
peca_sorteada = rand()%28;
if(vetor_aux[peca_sorteada]){
vetor_aux[peca_sorteada] = 0;
jogadores[num_jogador].pecas[i][0] = domino[peca_sorteada][0];
jogadores[num_jogador].pecas[i][1] = domino[peca_sorteada][1];
i++;
printf("[%d|%d]\n",jogadores[num_jogador].pecas[i] [0],jogadores[num_jogador].pecas[i][1]);
}
}
printf("\n\n");
num_jogador++;
}
}
當我嘗試等同domino[peca_sorteada][0]
到jogadores[num_jogador].pecas[i][0]
,對於爲例,使用->
操作編譯錯誤ocurrs,但.
操作中的printf打印不正確的值。爲什麼????
請澄清你的問題。給出一些不起作用的代碼的例子,並給出它產生的輸出。另外,請簡化您的代碼示例(我們是否真的需要查看所有這些循環,以及malloc等?) – 2010-11-09 01:11:21