编写一个函数,使用前面问题中使用的相同定义来创建存储在数组中的一副纸牌。阵列中每个套件将有一张卡。
笔记:
•您必须malloc()返回数组的存储空间
下面是一个代码片段,显示了调用该函数并在卡座中打印第51张卡的十六进制值。
14 char * c;
15 c = make_deck();
16 printf(" %x\n",*(c+50));
我的代码
1 char *make_deck()
2 {
3 int i=0;
4 char *deck;
5 deck= (char *)malloc(sizeof(char)*52);
6
7 if (deck==NULL)
8 {
9 printf(“malloc of size %d failed!”,52);
10 }
11 for(i=0;i<52;i++)
12 {
13 *deck= 0x00;
14 }
最佳答案
变量i
在循环中已经从0(0x00
)递增到52(0x34
)。您可以为其分配*(deck + i)
(deck[i]
):
#define DECK_SIZE 52
char *make_deck()
{
char i;
char *deck;
deck = malloc(sizeof(char) * DECK_SIZE);
if (deck == NULL) {
printf("malloc of size %d failed!", DECK_SIZE);
return NULL; // stop if malloc failed
}
for (i = 0; i < DECK_SIZE; ++i)
deck[i] = i;
return deck;
}
关于c - 我如何操纵位从0x00到0x34,以便创建由这些值表示的卡座,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486660/