warning : passing arg 1 of 'deal' from incompatible pointer type
可是这是书上的范例应该没问题啊。
求解释。 c gcc
[解决办法]
char *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
char * face[13] = {"Ace","Decue","Three","Four","Five","Six","Seven",
"Eight","Nine","Ten","Jack","Queen","King"};
改成const char *
或者deal中形参改成char * []
[解决办法]
二维数组的初始化
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void shuffle (int [] [13]);
void deal (const int [] [13], const char * [], const char * []);
int main()
{
//1
char const *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
//2
char const * face[13] = {"Ace","Decue","Three","Four","Five","Six","Seven",
"Eight","Nine","Ten","Jack","Queen","King"};
//3
int deck[4][13] = {{0}};
srand (time (NULL));
shuffle (deck);
deal (deck, face, suit);
return 0;
}
void shuffle (int wDeck[][13])
{
int card, row, column;
for (card = 1; card < 52; card ++){
row = rand()%4;
column = rand()%13;
while (wDeck[row][column] != 0){
row =rand ()% 4;
column =rand ()% 13;
}
wDeck[row][column] = card;
}
}
void deal (const int wDeck[][13], const char * wFace[], const char * wSuit[])
{
int card, row, column;
for (card = 1; card <= 52; card++)
for(row = 0; row <= 3; row++)
for(column = 0; column <= 12; column++)
if(wDeck [row][column] == card)
printf("%5s of %-8s%c",wFace[column], wSuit[row],
card % 2 == 0 ?'\n':'\t');
}